Обновить таблицу mysql по команде Insert

#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)