我想制作触发器,这是代码
DELIMITER $$
CREATE TRIGGER tax_year_update AFTER UPDATE ON const_data
FOR EACH ROW
BEGIN
IF NEW.tax_year <> OLD.tax_year THEN
TRUNCATE family_income;
TRUNCATE student_income;
END IF;
END$$
DELIMITER;
导致此错误
有什么建议吗?
答案 0 :(得分:2)
Truncate隐式提交触发器内不允许的事务。 TRUNCATE TABLE也是DDL statament。您需要更好地使用DELETE而不是TRUNCATE。
来自source:
根据版本和存储引擎,TRUNCATE可能会导致表格 被删除和重新创建。这提供了一种更有效的方式 删除表中的所有行,但它确实执行隐式 承诺。 您可能希望使用DELETE而不是TRUNCATE。
所以你可以试试
DELETE FROM family_income;
DELETE FROM student_income;
而不是
TRUNCATE family_income;
TRUNCATE student_income;
答案 1 :(得分:2)
截断表时,如果记录与其他表有关。它不会被截断。
首先,您要删除要截断的表中的所有记录。
然后转到选项并使用1设置自动增量。
享受:)