使用触发器更新表时出错

时间:2018-04-12 07:10:37

标签: mysql sql database mysqli

我有一个触发器设置,每次创建一个新表时,它会读取ID(位于varchar中)并将其转换为integer并将其存储在另一列中。

但是当我运行它时遇到以下错误:

Can't update table 'products' in stored function/trigger because it is already used by statement which invoked this stored function/trigger.

这是我的触发器:

CREATE TRIGGER `var_to_int` AFTER INSERT ON `products`
FOR EACH ROW UPDATE `products` 
SET `int_id`= CAST(`var_id` AS INT)
WHERE `int_id` IS NULL OR `int_id` = ''

如何防止这种情况?

PHP脚本在表中创建新项目时抛出此错误。

1 个答案:

答案 0 :(得分:1)

您无法更新表格本身。 触发器在UPDATE时启动,然后它必须执行UPDATE。形成无限循环。尝试使用附加表来存储临时数据,以便以后更新正确的表