有没有办法在sqlite中定义触发器的执行顺序?

时间:2013-05-02 23:10:09

标签: sqlite

如果表有多个on insert触发器。我可以指定在使用sqlite将值插入表格时首先执行哪个触发器吗?

我想要组合我的触发器,但问题是我对每个触发器都有不同的when语句,如果我在{{1}之前正确理解了doc when语句} / update等声明。

insert

2 个答案:

答案 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语句的结果的第一行。)