#mysql #sql #database-trigger
#mysql #sql #база данных-триггер
Вопрос:
создайте триггер со статусом с переданным со статусом = 2, и мне нужно создать tigger после обновления строки во второй раз, когда del_status = 2
CREATE TRIGGER `exchange_log_update` AFTER UPDATE ON `exchange`
FOR EACH ROW INSERT
IF NEW.del_status = 2
INTO
exchange_log
SET
client_id = NEW.client_id,
ex_type = NEW.ex_type,
segment_type = NEW.segment_type,
validity_from = NEW.validity_from,
validity_to = NEW.validity_to,
file_upload = NEW.file_upload,
log_status = 'update',
created_at = NEW.created_at
END IF
END
#1064 - You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near 'IF NEW.del_status
INTO
exchange_log
SET
client_id = NEW.client_id,
ex' at line 3
Комментарии:
1. Не должно ли это быть
IF NEW.del_status = 2 THEN INSERT...
2. Похоже, это не имеет никакого отношения к PHP. Я отредактировал ваши теги. В будущем, пожалуйста, проверьте, что вы добавили правильные теги, и тогда ваш вопрос с большей вероятностью увидят люди с соответствующим опытом.
3. Вам бы не сошел с рук этот код в отдельной вставке, зачем вам это делать в триггере.
4. Также я не вижу, чтобы устанавливались разделители, или операторы завершались, или начало соответствовало концу.
Ответ №1:
попробуйте это
CREATE TRIGGER `exchange_log_update_new` AFTER UPDATE ON `exchange`
FOR EACH ROW BEGIN
IF (NEW.del_status = 2)
THEN
INSERT INTO `exchange_log`
values(client_id = NEW.client_id,
ex_type = NEW.ex_type,
segment_type = NEW.segment_type,
validity_from = NEW.validity_from,
validity_to = NEW.validity_to,
file_upload = NEW.file_upload,
log_status = 'update',
created_at = NEW.created_at);
END IF;
END