powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Тригер на insert.
9 сообщений из 9, страница 1 из 1
Тригер на insert.
    #38842018
Set666
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
У меня есть таблица, table1 при вставке в неё новой записи, происходит insert в другую таблицу table_log.
Подскажите как сделать, что бы при срабатывании тригера, перед вставкой в таблицу table_log, проверялось существует ли уже такая запись. Если существует то вставку строки не делать.
...
Рейтинг: 0 / 0
Тригер на insert.
    #38842023
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Самое простое - из нужных полей в таблице table_log сделать уникальный ключ и вставку производить через INSERT IGNORE.
...
Рейтинг: 0 / 0
Тригер на insert.
    #38842065
Arhat109
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
miksoft,

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

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

Так обновление тоже не делает вставку новой строки... :)
...
Рейтинг: 0 / 0
Тригер на insert.
    #38842321
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;
...
Рейтинг: 0 / 0
Тригер на insert.
    #38842834
JeStone
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Set666,

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

могут ещё как.
...
Рейтинг: 0 / 0
Тригер на insert.
    #38843639
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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
9 сообщений из 9, страница 1 из 1
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Тригер на insert.
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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