在触发器中获取最新插入的ID?

ajs*_*sie 7 mysql database triggers

我使用触发器插入一行,并希望在后续查询中使用最后创建的id进行使用.

我怎么能这样做?

代码如下:

BEGIN
IF (NEW.counter >= 100) THEN
INSERT INTO tagCategories (name, counter) VALUES ('unnamed', NEW.counter);
// here i want to have access to the above inserted id
UPDATE tagCategories2tagPairs SET tagCategoryId = <<ID_HERE>> WHERE tagPairId = OLD.id
END IF;
END
Run Code Online (Sandbox Code Playgroud)

Mit*_*eat 8

你看过LAST_INSERT_ID()吗?但请注意:

如果使用单个INSERT语句插入多行,则LAST_INSERT_ID()仅返回为第一个插入行生成的值.

  • 当我在after_trigger中使用它时,由于某种原因,它会返回先前插入的ID。例如,可以使用`NEW.id`。例如,“ OLD.id”可用于删除或更新(至少这是文档中写的)。[docs。](https://dev.mysql.com/doc/refman/5.7/en/trigger-syntax.html) (2认同)