gpt4 book ai didi

mysql触发器通过变量获取列值

转载 作者:行者123 更新时间:2023-11-29 10:43:08 24 4
gpt4 key购买 nike

在创建后的这个​​ mysql 触发器中,我有:

@var = 'column_name_of_new_object'

我怎样才能得到NEW.@var?就像 JavaScript 中的 eval 一样。

最佳答案

一般来说,根据变量创建标识符需要使用动态 SQL,例如 PREPARE 和 EXECUTE。

但是您不能在触发器内使用动态 SQL。

mysql> CREATE TRIGGER mytrigger BEFORE INSERT ON mytable
-> FOR EACH ROW BEGIN
-> DECLARE col VARCHAR(10) DEFAULT 'mytimestamp';
-> SET @sql = CONCAT('SET NEW.', col , ' = UNIX_TIMESTAMP(NOW())');
-> PREPARE st FROM @sql;
-> EXECUTE st;
-> END;;

ERROR 1336 (0A000): Dynamic SQL is not allowed in stored function or trigger

你不能这样做,而且我认为你很难找到这样做的理由。

<小时/>

您在上面的评论:

I need to get one of the column value of people row(NEW) to insert into another table. But that column name not fixed.

这是不正确的——表的列是固定的。如果更改列名称,则也必须更改触发器。

关于mysql触发器通过变量获取列值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45111601/

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