mysql - MySQL触发器:未定义的变量'tableName'
问题描述
我看不出这个触发器定义有什么问题...我不知道选择查询是错误的还是其他地方。
这个想法是当在tableA中插入一行时,触发器SELECT
在tableB上执行a以检索一些数据并插入或更新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 ;
更新 03/12/2020 似乎添加第二个INTO varB
会导致aTable
变量未声明的错误。
解决方案
测试单语句形式:
CREATE TRIGGER my_trigger
AFTER INSERT
ON myTable
FOR EACH ROW
INSERT INTO myThirdTable (id, `time`, a)
SELECT NEW.Id, NEW.time, myOtherTable.Id
FROM myOtherTable
WHERE myOtherTable.Id = NEW.Id
ON DUPLICATE KEY UPDATE ...;
推荐阅读
- python - Django 和 React 被 403 禁止
- c# - 添加新对象时列出覆盖以前添加的对象
- android - 指定 google pay 标记化
- excel - 参考关闭的工作簿/工作表单元格
- javascript - 无法选择 HTML 集合子项
- elasticsearch - 基于整数值的提升分数 - Elasticsearch
- android - 如何调用适配器中的每个对象?
- r - 使用 R 绘图
- asp.net - Asp.Net Core MVC 电影应用程序 - 脚手架项目无法正常工作
- c++ - 为什么来自 libcxx 的 __dependent_type 使用模板非类型参数 bool _Dummy?