0

I know that in triggers you have the keywords NEW and OLD to refer to the entry that is being, or was, inserted into the table to which the trigger is bound. Are there any other keywords? I'm looking for one specifically that reference's the table that the trigger is bound to (like CUR_TABLE, or something); this way I can copy the trigger and apply it to several tables with different names and not need to alter the body of the trigger? Thanks in advance for any help!

4

2 回答 2

1

这在 MySQL 中是不可能的。您可以编写一个小的 PHP 脚本,为数组中的每个“表名”生成代码 :)

于 2013-07-03T20:35:38.790 回答
1

动态 SQL 不能在触发器中使用。为了让触发器存在,开发人员已经知道他在哪个表中——所以理论上表名应该是硬编码的。

如果您正在生成触发器,例如存储过程,您可以使用可变表名生成它们 - 但不能执行它们(因此您必须获取存储过程的结果并单独执行)。

请参阅:http ://dev.mysql.com/doc/refman/5.6/en/stored-program-restrictions.html

SQL 准备语句(PREPARE、EXECUTE、DEALLOCATE PREPARE)可用于存储过程,但不能用于存储函数或触发器。因此,存储函数和触发器不能使用动态 SQL(您将语句构造为字符串然后执行它们)。

于 2013-07-03T21:46:27.840 回答