在sqlite中触发不同的数据库

时间:2013-12-05 05:32:20

标签: sqlite triggers

我有2个不同的数据库'A'和'B'。我需要创建一个触发器,当我在数据库'A'的表'T1'中插入任何条目时,然后数据库'B'的表'T2'的条目'会被删除。

请建议我一个方法!!

1 个答案:

答案 0 :(得分:4)

这是不可能的。

  1. 在SQLite中,DML内部触发器只能修改同一数据库(see here)的表。您无法修改附加数据库的表。
  2. 同样,除非您声明TEMPORARY,否则不能为附加数据库声明触发器(以其他方式执行)。
  3. 因此,(仅)以下是可能的:

    对于A.sqlite:

    create table T1(id integer primary key);
    

    对于B.sqlite:

    create table T2(id integer primary key);
    attach 'A.sqlite' as A;
    create temporary trigger T1_del after delete on A.T1 
    begin
        delete from T2 where id = OLD.id;
    end;
    

    但是这只会在声明临时触发器的连接中传播从T1到T2的删除。如果你单独打开A.sqlite,则触发器不会出现。