【问题标题】:MYSQL Update Trigger get updated row IDMYSQL 更新触发器获取更新的行 ID
【发布时间】:2025-11-26 21:35:02
【问题描述】:

我在 MySQL 中有一个正在更新的表。我希望触发器获取更新的行 ID,以便对其进行一些处理。我该怎么做?我可以在 SQL Server 中执行此操作,但我是 MySQL 新手,在网上找不到任何东西。

更新...

所以我不能分享代码,但这基本上是我想做的。

Table: 
**id** **product** **price**
1,     Coke,         2.05 USD 
2,     Sprite,       2.00 USD
3,     7Up,          2.10 USD

我想将 id 2,“Sprite”的价格更新为 2.50 美元。现在我将正常执行此操作,但我需要运行一个触发器来更新审计表。 Audit 表需要注册产品的 id。所以基本上我需要知道更新行的 id 是 2...

sql里面有类似的吗?

【问题讨论】:

  • 你能发布你的代码吗?你的意思是在触发器内部做一些工作吗?使用FOR EACH ROW 并使用别名NEW.your_columnOLD.your_column 引用列。能详细一点吗?
  • 只要不更改 id,您可以在触发器中使用 NEW.idOLD.id。我会写一个例子。

标签: mysql triggers


【解决方案1】:

只要id 列不变,您可以使用NEW.idOLD.id 来引用id 列。

一般来说,使用别名NEW 可以获得更新列的当前值,使用OLD 可以获得执行更新之前列的值。

CREATE TRIGGER au_product_table
    AFTER UPDATE ON product_table
    FOR EACH ROW
    UPDATE audit
        SET product_id = NEW.id
        WHERE your_condition;

【讨论】: