0

当我尝试在表中插入新行时,我的触发器失败,因为 Mysql 不支持更新触发器分配到的同一表中的行。有人对好的解决方法/替代方案有建议吗?

我的触发器:

-- Trigger DDL Statements
DELIMITER $$

CREATE TRIGGER check_sequence
BEFORE INSERT ON data FOR EACH ROW
BEGIN 
    IF EXISTS(SELECT TRUE FROM data WHERE sequence = NEW.sequence) THEN
        UPDATE data SET sequence=sequence+1 WHERE sequence >= NEW.sequence;
    END IF;
END $$
DELIMITER ;

尝试插入新行时显示的错误 Sql:

ERROR 1442 (HY000): Can't update table 'data' in stored function/trigger because it is already used by statement which invoked this stored function/trigger.

谢谢解答,

4

1 回答 1

1

在 MySQL 中,您不能在表 A 的触发器中更新(或插入)表 A。

http://dev.mysql.com/doc/refman/5.0/en/stored-program-restrictions.html

您可以尝试存储过程并使用事务,或者考虑 PostgreSQL,它可以做到这一点。

于 2013-06-22T18:55:56.010 回答