Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

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

EVG en Ученик (71), на голосовании 1 год назад
Есть таблица со значениями:
ID Name Address
1 abod ad33a

Есть такой запрос:
 insert into test values (1, "abc", "def") on duplicate key update ID = ID; 
select * from test
Собственно, он то работает, но insert это не update, и колонки name и address не меняются...
Можно ли создать такой тригер, который бы при таких insert обновлял в этой же таблицу поле name и address?
Голосование за лучший ответ
Татьяна Просветленный (36374) 1 год назад
Да, можно создать триггер, который будет обновлять поля "Name" и "Address" при использовании оператора "INSERT" с параметром "ON DUPLICATE KEY UPDATE". Например, вот такой код:
 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" только для тех записей, которые уже существуют в таблице и при вставке дублируются по уникальному ключу.
Александр Искусственный Интеллект (301569) 1 год назад
т.е. ты хочешь использовать insert, но чтоб он работал как update?
хм... а нахрена?
можешь метить мой ответ как бесполезный... но может потрудишься объяснить нормально что ты пытаешься сделать?
Похожие вопросы