Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Тригер на insert. / 9 сообщений из 9, страница 1 из 1
24.12.2014, 17:56:45
    #38842018
Set666
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Тригер на insert.
У меня есть таблица, table1 при вставке в неё новой записи, происходит insert в другую таблицу table_log.
Подскажите как сделать, что бы при срабатывании тригера, перед вставкой в таблицу table_log, проверялось существует ли уже такая запись. Если существует то вставку строки не делать.
...
Рейтинг: 0 / 0
24.12.2014, 18:01:40
    #38842023
miksoft
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Тригер на insert.
Самое простое - из нужных полей в таблице table_log сделать уникальный ключ и вставку производить через INSERT IGNORE.
...
Рейтинг: 0 / 0
24.12.2014, 18:26:28
    #38842065
Arhat109
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Тригер на insert.
miksoft,

предпочитаю ON DUPLICATE KEY UPDATE и какой-нить счетчик инкрементировать ... хоть какая-то инфа о том, что идет попытка вставки в уже имеющуюся запись... :)
...
Рейтинг: 0 / 0
24.12.2014, 18:27:56
    #38842069
miksoft
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Тригер на insert.
Arhat109miksoft,

предпочитаю ON DUPLICATE KEY UPDATE и какой-нить счетчик инкрементировать ... хоть какая-то инфа о том, что идет попытка вставки в уже имеющуюся запись... :)Ну можно и так, конечно. Зависит от задачи. Я исходил из фразы "Если существует то вставку строки не делать".
...
Рейтинг: 0 / 0
24.12.2014, 18:50:49
    #38842088
Arhat109
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Тригер на insert.
miksoft,

Так обновление тоже не делает вставку новой строки... :)
...
Рейтинг: 0 / 0
25.12.2014, 08:49:46
    #38842321
Set666
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Тригер на insert.
Ребят спасибо за помощь, я тут свой вариант придумал может кому пригодится
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
DELIMITER 
	create TRIGGER ins_cms_log_user
	AFTER INSERT ON cms_log_user FOR EACH ROW
	BEGIN
	  insert into cms_users_messages(from_id,to_id, date_pub, is_new,content,id_log_user)
	  values(13,new.user_id ,new.ds,1,'Вы прошли регистрацию. Перейдите в личный кабинет и  Заполните профиль представителя спортивной организации', new.id);

      insert into cms_users_contacts(user_id,contact_id,date_last_msg,messages)
	  select  distinct new.user_id,13,new.ds,0
	  from cms_users_contacts
	  where not exists (select * from cms_users_contacts where user_id =new.user_id and contact_id=13)
	  limit 1;


	end;
...
Рейтинг: 0 / 0
25.12.2014, 14:03:49
    #38842834
JeStone
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Тригер на insert.
Set666,

с какого перепугу вообще в логе такие условия должны делаться? Как там могут появиться дубли?
...
Рейтинг: 0 / 0
26.12.2014, 07:21:29
    #38843487
Arhat109
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Тригер на insert.
JeStone,

могут ещё как.
...
Рейтинг: 0 / 0
26.12.2014, 11:33:51
    #38843639
miksoft
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Тригер на insert.
Set666Ребят спасибо за помощь, я тут свой вариант придумал может кому пригодится
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
DELIMITER 
	create TRIGGER ins_cms_log_user
	AFTER INSERT ON cms_log_user FOR EACH ROW
	BEGIN
	  insert into cms_users_messages(from_id,to_id, date_pub, is_new,content,id_log_user)
	  values(13,new.user_id ,new.ds,1,'Вы прошли регистрацию. Перейдите в личный кабинет и  Заполните профиль представителя спортивной организации', new.id);

      insert into cms_users_contacts(user_id,contact_id,date_last_msg,messages)
	  select  distinct new.user_id,13,new.ds,0
	  from cms_users_contacts
	  where not exists (select * from cms_users_contacts where user_id =new.user_id and contact_id=13)
	  limit 1;


	end;

Если уж идти путем insert ... select, то тогда уж так:
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
	create TRIGGER ins_cms_log_user
	AFTER INSERT ON cms_log_user FOR EACH ROW
	BEGIN
	  insert into cms_users_messages(from_id,to_id, date_pub, is_new,content,id_log_user)
	  values(13,new.user_id ,new.ds,1,'Вы прошли регистрацию. Перейдите в личный кабинет и  Заполните профиль представителя спортивной организации', new.id);

      insert into cms_users_contacts(user_id,contact_id,date_last_msg,messages)
	  select  new.user_id,13,new.ds,0
	  from dual
	  where not exists (select null from cms_users_contacts where user_id =new.user_id and contact_id=13);

	end;
...
Рейтинг: 0 / 0
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Тригер на insert. / 9 сообщений из 9, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]