#mysql #sql #triggers
#mysql #sql #триггеры
Вопрос:
У меня ситуация, в которой я хочу обновить вторую таблицу, когда строка данных вставлена в первую таблицу. Для достижения этого я использую триггеры mysql, и ниже приведен запрос, который я использую, но у меня он не работает.
DELIMITER $$
CREATE TRIGGER after_insert;
AFTER INSERT ON table_first
FOR EACH ROW BEGIN
INSERT INTO table_second
(value1, rvalue2, value3)
VALUES
('123456', '654321', 'hello trigger')
END
DELIMITER ;
Обе таблицы существуют в одной базе данных.
Спасибо
Ответ №1:
Некоторые небольшие проблемы с синтаксисом… здесь :
DELIMITER $$
CREATE TRIGGER after_insert -- remove ;
AFTER INSERT ON table_first
FOR EACH ROW BEGIN
INSERT INTO table_second
(value1, rvalue2, value3)
VALUES
('123456', '654321', 'hello trigger'); -- add ;
END
$$ -- add $$
DELIMITER ;
Комментарии:
1. Спасибо, это сработало отлично. Теперь, пожалуйста, не могли бы вы сказать мне еще одну вещь? Предположим, что в первой таблице есть столбец gender, и я хочу, чтобы запрос INSERT триггера выполнялся только в том случае, если пол «Мужской». Я попробовал IF NEW.gender ==’MALE’ «Сделать что-нибудь» END IF, но это не сработало. Спасибо
2. Оператором равенства в SQL является «=», а не «==»… (да, вам нужно поменять привычки, если вы недавно занимались C / php / python / etc)