【发布时间】:2012-10-14 17:04:37
【问题描述】:
如果 C 列等于特定值,我有这段代码可以防止重复
DELIMITER $$
CREATE TRIGGER special_unique_test BEFORE INSERT ON myTable
FOR EACH ROW BEGIN
IF NEW.C = 'x' AND EXISTS (
SELECT * FROM myTable WHERE A = NEW.A AND B = NEW.B AND C = 'x'
)THEN
UPDATE myTable SET D = D + 1 WHERE A = NEW.A AND B = NEW.B AND C = 'x';
END IF;
END$$
DELIMITER ;
除了不执行更新语句之外,一切正常。
添加
在 PhpMyAdmin 中试过这个,我得到了这个错误:
1442 - 无法更新存储函数/触发器中的表“myTable”,因为它已被调用此存储函数/触发器的语句使用。
我可以通过为 D 列创建一个单独的表来解决这个问题,但最好将它放在同一个表中。
额外问题:当我使用 mysqli 从我的网站插入内容时,如何显示此错误?
【问题讨论】:
标签: mysql triggers sql-update