如果列 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 从我的网站插入内容时,如何显示此错误?