mysql触发器通过vaiable获取列值

时间:2017-07-14 21:07:20

标签: mysql sql

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

@var = 'column_name_of_new_object'

如何在javascript中获取NEW.@var? Like eval

1 个答案:

答案 0 :(得分:1)

通常,基于变量创建标识符要求您使用动态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

你不能这样做,我认为你很难想出这样做的理由。

您的上述评论:

  

我需要将其中一行列值(NEW)插入到另一个表中。但该列名称未修复。

这不正确 - 表的列已修复。如果更改列名,则还必须更改触发器。