MySQL 简单触发器无法在另一个 table 中找到该列
MySQL simple trigger can't find the column in another table
我是 MySQL 的新手。我有这个触发器:
DROP TRIGGER IF EXISTS `increment`;
TRIGGER `increment`
AFTER INSERT ON `table1`
FOR EACH ROW
BEGIN
UPDATE table2
SET table2.mycolumn = table2.mycolumn+1
WHERE table2.id = table1.id;
END
它给出错误:
Unknown column 'table1.id'
为什么? (该列存在)。如果我使用这个触发器工作正常:
WHERE table2.id = 1;
请帮我理解一下。
使用NEW
或OLD
来引用导致触发器执行的行的列。但不是 table 的列,您随后会在触发器主体中的 SQL 语句中进行更改。
示例:
TRIGGER `increment`
AFTER INSERT ON `table1`
FOR EACH ROW
BEGIN
UPDATE table2
SET table2.mycolumn = table2.mycolumn+1
WHERE table2.id = NEW.id;
END
在这个例子中,NEW.id
指的是插入到increment
table的当前行的id列。
插入触发器中的当前行没有 OLD
版本,因为它是新行。
我是 MySQL 的新手。我有这个触发器:
DROP TRIGGER IF EXISTS `increment`;
TRIGGER `increment`
AFTER INSERT ON `table1`
FOR EACH ROW
BEGIN
UPDATE table2
SET table2.mycolumn = table2.mycolumn+1
WHERE table2.id = table1.id;
END
它给出错误:
Unknown column 'table1.id'
为什么? (该列存在)。如果我使用这个触发器工作正常:
WHERE table2.id = 1;
请帮我理解一下。
使用NEW
或OLD
来引用导致触发器执行的行的列。但不是 table 的列,您随后会在触发器主体中的 SQL 语句中进行更改。
示例:
TRIGGER `increment`
AFTER INSERT ON `table1`
FOR EACH ROW
BEGIN
UPDATE table2
SET table2.mycolumn = table2.mycolumn+1
WHERE table2.id = NEW.id;
END
在这个例子中,NEW.id
指的是插入到increment
table的当前行的id列。
插入触发器中的当前行没有 OLD
版本,因为它是新行。