【发布时间】:2021-03-13 14:10:49
【问题描述】:
我看不出这个触发器定义有什么问题...我不知道选择查询是错误的还是其他地方。
想法是当在tableA中插入一行时,触发器在tableB上执行SELECT以检索一些数据并insert或update tableC。
错误:
SQL Error [1327] [42000]: Undeclared variable: aTable
触发 DDL:
DELIMITER //
CREATE TRIGGER my_trigger
AFTER INSERT
ON myTable
FOR EACH ROW
BEGIN
DECLARE varA integer;
DECLARE varB integer;
IF NEW.`Type` = 'comment' THEN
SELECT
myOtherTable.Id INTO varA
,aTable.Id INTO varB
FROM myOtherTable <----- maybe here
JOIN aTable ON aTable.id = myOtherTable.aTableId
WHERE myOtherTable.Id = NEW.Id;
Insert INTO myThirdTable VALUES
(NEW.Id, NEW.time, varA)
ON DUPLICATE KEY UPDATE ...;
END IF;
END//
DELIMITER ;
2020 年 3 月 12 日更新
似乎添加第二个INTO varB 会导致aTable 变量未声明的错误。
【问题讨论】:
-
发布的代码不会产生发布的错误。
-
@p.Salmon 更清楚了吗?我试图构建一个与实际用例一样接近的 DDL
-
这不是选择进入的正确语法,请阅读手册