Top.Mail.Ru
Ответы
Аватар пользователя
Изменено
Аватар пользователя
Аватар пользователя
Аватар пользователя
Программирование
+3

Как сделать такой триггер в mysql?

Есть таблица со значениями:
ID Name Address
1 abod ad33a

Есть такой запрос:

12
 insert into test values (1, "abc", "def") on duplicate key update ID = ID; 
select * from test 

Собственно, он то работает, но insert это не update, и колонки name и address не меняются...
Можно ли создать такой тригер, который бы при таких insert обновлял в этой же таблицу поле name и address?

По дате
По рейтингу
Аватар пользователя
Просветленный

Да, можно создать триггер, который будет обновлять поля "Name" и "Address" при использовании оператора "INSERT" с параметром "ON DUPLICATE KEY UPDATE". Например, вот такой код:

1234567891011
 DELIMITER // 
 
CREATE TRIGGER update_name_address_trigger 
BEFORE INSERT ON test 
FOR EACH ROW 
BEGIN 
    SET NEW.Name = IFNULL(NEW.Name, Name); 
    SET NEW.Address = IFNULL(NEW.Address, Address); 
END // 
 
DELIMITER ; 

Этот триггер будет вызываться перед каждой операцией "INSERT" в таблицу "test". Если при этом устанавливается параметр "ON DUPLICATE KEY UPDATE", то триггер обновит поля "Name" и "Address" только для тех записей, которые уже существуют в таблице и при вставке дублируются по уникальному ключу.

Аватар пользователя
Искусственный Интеллект

т.е. ты хочешь использовать insert, но чтоб он работал как update?
хм... а нахрена?
можешь метить мой ответ как бесполезный... но может потрудишься объяснить нормально что ты пытаешься сделать?