gpt4 book ai didi

MySQL 触发器,每行具有相同的变量/时间戳

转载 作者:行者123 更新时间:2023-11-30 00:12:42 25 4
gpt4 key购买 nike

我正在尝试使用触发器来创建自动审核跟踪。

CREATE TRIGGER `audit_trigger_name_here` AFTER UPDATE ON `source_table`
FOR EACH ROW
INSERT INTO `audit_table` (`OldCol`, `NewCol`, `TimeStamp`)
VALUES (OLD.Col, NEW.Col, UTC_TIMESTAMP())

到目前为止一切顺利。但由于单个查询可以更改多行,我们希望能够使用唯一标识符对它们进行分组。

我尝试使用 UTC_TIMESTAMP() 来执行此操作,但预计这会在“FOR EACH ROW”的每次迭代中产生一个新的时间戳。我需要的是一种在开始时在 FOR EACH ROW 部分之前在变量中设置一次时间戳的方法,然后能够使用该变量。

我对 mysql 很陌生,所以我很感激您的回复中的具体信息。

提前致谢!

最佳答案

确保您的 source_table 中有一列在每次更新时都使用当前 utc_timestamp 进行更新(不在触发器中),然后在触发器中使用该列。

您将在旧/新中找到所有值。命名空间,如果所有行都获得相同的 utc_timestamp,那么它们都会插入审计表中。

沿着

的思路
create table source (
id int,
value varchar(255),
ts timestamp
);

create trigger audit after update on source
for each row
insert into audit (old, new, ts) values (old.value, new.value, new.ts);

update source
set value = 'some new value',
ts = utc_timestamp()
where id in (1,2,3);

关于MySQL 触发器,每行具有相同的变量/时间戳,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23920440/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com