gpt4 book ai didi

mysql - 如何从MySQL中动态获取列名获取OLD VALUE和NEW VALUE?

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

SET @total_no_of_columns :=  (select count(*) FROM information_schema.COLUMNS c where c.TABLE_NAME = 'MyTableName' and c.TABLE_SCHEMA = 'TableSchema');

SET @iCNT = 1;

WHILE @iCNT<= @total_no_of_columns DO
SET @col_name := (SELECT COLUMN_NAME FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_SCHEMA = 'TableSchema' AND TABLE_NAME = 'MyTableName' AND ORDINAL_POSITION = @iCNT);

IF OLD.@col_name <> NEW.@col_name THEN
//Query to insert in audit table
END IF;

SET @iCNT = @iCNT + 1;
END WHILE;

但是OLD.@col_name <> NEW.@col_name是错误的。
解决方案应该是什么?

最佳答案

在触发器正文中,OLD 和 NEW 关键字使您能够访问受触发器影响的行中的列

在 INSERT 触发器中,只能使用 NEW.col_name。

在 UPDATE 触发器中,您可以使用 OLD.col_name 引用行更新前的列,使用 NEW.col_name 引用行更新后的列。

在 DELETE 触发器中,只能使用 OLD.col_name;没有新行。

但是 OLD 和 New 用于已经存在的列。但是你在变量上使用它是不可能的。仍然如果你想将这些值存储在变量中,然后你可以使用它

关于mysql - 如何从MySQL中动态获取列名获取OLD VALUE和NEW VALUE?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23560881/

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