Hello,

Table deptab has a foreign key relationship with table reftab -

sqlite> .sch
CREATE TABLE reftab(id integer primary key);
CREATE TABLE deptab(id integer primary key, ref int references reftab);

foreign key support is enabled -

sqlite> pragma foreign_keys;
foreign_keys
1

the referenced table is empty -

sqlite> select * from reftab;
sqlite>

so the following insert fails and deptab remains empty as expected -

sqlite> insert into deptab(ref) select 1;
Error: FOREIGN KEY constraint failed
sqlite> select * from deptab;
sqlite>

Now I define the following view and trigger -

CREATE VIEW vtrig as select 1;
CREATE TRIGGER ttrig instead of insert on vtrig begin
  delete from deptab;
  delete from reftab;
  insert into deptab(ref) select 2;
  select raise(FAIL, 'this statement seems to temporarily disable foreign
support') where (select count(*) > 0 from deptab);
end;

sqlite> insert into vtrig select 5;
Error: this statement seems to temporarily disable foreign support
sqlite> select * from reftab;
sqlite> select * from deptab;
id      ref
1       2
sqlite> pragma foreign_keys;
foreign_keys
1

Can we conclude foreign key support is disabled within triggers with raise
functions?
_______________________________________________
sqlite-users mailing list
sqlite-users@mailinglists.sqlite.org
http://mailinglists.sqlite.org/cgi-bin/mailman/listinfo/sqlite-users

Reply via email to