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;

请帮我理解一下。

使用NEWOLD 来引用导致触发器执行的行的列。但不是 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指的是插入到incrementtable的当前行的id列。

插入触发器中的当前行没有 OLD 版本,因为它是新行。