2015-10-07 3 views
0

Я хотел бы создать триггер до удаления, который удаляет строки из двух разных таблиц. Но я не могу понять, какие параметры использовать.Что такое правильный синтаксис MySQL перед триггером удаления?

У меня есть домашний стол, и когда я удаляю строку, я хотел бы удалить каждую строку из двух других таблиц: user_house и firm_house, которая содержит тот же самый идентификатор дома, что и тот, который запускает событие.

Что означает FOR EACH ROW? И как я могу правильно настроить мой триггер?

USE `mydb`; 
DELIMITER $$ 
CREATE TRIGGER `deleteUnions` BEFORE DELETE ON `house` 
FOR EACH ROW 
BEGIN 
    DELETE FROM user_house WHERE ?? = ??; 
    DELETE FROM firm_house WHERE ?? = ??; 
END 

Некоторые подробности о структуре:

  • user_house присоединяется user_id и house_id;
  • firm_houise соединен firm_id и house_id.

ответ

1

Обратитесь к записи, которая удаляется в триггере с помощью OLD. Затем используйте id для удаления из других таблиц.

DELETE FROM user_house WHERE house_id = OLD.house_id; 
DELETE FROM firm_house WHERE house_id = OLD.house_id; 
+0

Я получаю сообщение «ERROR 1054: Неизвестный столбец« id »в« OLD »при попытке применить? – JonCode

+0

Как выглядят ваши таблицы? У вашей таблицы «house» нет столбца «id»? И имеет 'user_house' столбец' house_id'? –

+0

Я получил его на работу, old.house_id ;. Большое спасибо за помощь :) – JonCode

Смежные вопросы