如果表有多个on insert
触发器。我可以指定在使用sqlite将值插入表格时首先执行哪个触发器吗?
我想要组合我的触发器,但问题是我对每个触发器都有不同的when
语句,如果我在{{1}之前正确理解了doc when
语句} / update
等声明。
insert
答案 0 :(得分:1)
将所有触发器合并为一个:
CREATE TRIGGER some_trigger
AFTER INSERT ON some_table
FOR EACH ROW BEGIN
-- statement 1;
-- statement 2;
-- statement 3;
...
-- statement n;
END;
答案 1 :(得分:0)
如果触发是要进行更新(如OP的示例),那么这将无济于事。但是,如果每个触发器都只是检查某件事并可能引发错误(我认为这是很常见的情况),则可以将它们全部打包到单个触发器过程中(具有隐式的执行顺序)和分别使用不同的表达式
CREATE TRIGGER some_trigger
AFTER INSERT ON some_table
BEGIN
SELECT RAISE(FAIL, "error message one") WHERE (<select-statement-one>) == <value-one>;
SELECT RAISE(FAIL, "error message two") WHERE (<select-statement-two>) == <value-two>;
...
END;
(请记住,子查询表达式的值是附带的SELECT语句的结果的第一行。)