как использовать условие if в mysql со статусом = 2

#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