【问题标题】:Trigger in sqlite different database在sqlite不同的数据库中触发
【发布时间】:2013-12-05 15:49:04
【问题描述】:

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

请给我建议!

【问题讨论】:

    标签: sqlite triggers


    【解决方案1】:

    这是不可能的。

    1. 在 SQLite 中,触发器内部的 DML 只能修改同一数据库的表 (see here)。您不能修改附加数据库的表。
    2. 同样,您不能为附加的数据库声明触发器(反之亦然),除非您将它们声明为 TEMPORARY。

    因此,(仅)以下情况是可能的:

    对于 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,触发器就没有了。

    【讨论】:

      猜你喜欢
      • 2012-04-13
      • 1970-01-01
      • 2023-03-02
      • 2011-10-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-04-06
      • 1970-01-01
      相关资源
      最近更新 更多