Кто-то сказал мне, что мне нужно использовать разделитель в моем триггере.Я смотрю на страницу руководства MySQL и нахожу это в примере;однако, это не в общей документации.
Вот код, который я пытаюсь исправить:
CREATE TRIGGER adult BEFORE INSERT OR UPDATE ON table5.column5
FOR EACH ROW BEGIN
UPDATE table1 SET column5 = table5.column5 WHERE table5id = table1xtable5.table5id WHERE table1xtable5.table1id = OLD.table1.id$
END$
Честно говоря, я понятия не имею, как это сделать, и документация на http://dev.mysql.com/doc/refman/5.5/en/create-trigger.html кажется ужасно неадекватной ссылкой.Например, когда вы читаете о «old
» и «new
», он ссылается на «subject table
» - таблицу, связанную с триггером.С этим триггером связаны две таблицы, и я на самом деле пытаюсь связать больше таблиц с этим триггером .... При рассмотрении примера кода в строке UPDATE
, которая влияет на table4, используются только столбцы внутри table4 (они добавляют 1 к значению).Кроме того, они используют WHERE ~ a3 = NEW.a1
.Я не думаю, что этот идентификатор работает таким образом.Не должно быть универсального идентификатора, который бы работал в разных таблицах.Они определенно должны использовать таблицу взаимозависимостей в этом примере для применимости.
Я на самом деле задал похожий вопрос ранее сегодня о том, каким будет хороший метод для этого, но теперь мне просто интересно, еслиесть метод.Спасибо за прочтение.:)
Вот пример триггера, который обновляет другую таблицу, но, похоже, он не использует разделитель:
CREATE TRIGGER mytrigger BEFORE INSERT ON odp
FOR EACH ROW
UPDATE total_points SET points = points + NEW.points;
В этом примере не объясняется, какodp
и total_points
перекрываются.Как мы можем быть уверены, что строка points
таблицы total_points
является правильной строкой points
?Какую строку в таблице points
обновит MySQL?x //
Итак, не должно ли быть какого-либо способа указать, какую из строк total_points.points обновить BEFORE INSERT ON odp
?