在sqlite不同的数据库中触发

xTM*_*elx 5 sqlite triggers

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

请给我建议一个方法!!

Fab*_*ian 5

这不可能。

  1. 在 SQLite 中,触发器内的 DML 只能修改同一数据库的表(请参阅此处)。您不能修改附加数据库的表。
  2. 同样,除非将触发器声明为 TEMPORARY,否则不能为附加数据库声明触发器(以其他方式执行)。

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

对于 A.sqlite:

create table T1(id integer primary key);
Run Code Online (Sandbox Code Playgroud)

对于 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;
Run Code Online (Sandbox Code Playgroud)

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