based on my reading of the docs for INSERT OR REPLACE, it will delete  
rows for ANY constraint violation, not just one involving the primary  
key. Is that reading wrong?


-James

> On Thu, 02 Jul 2009 19:28:17 -0700, James Gregurich
> <bayoubenga...@mac.com> wrote:
>
> >
> >question:
> >
> >How do I maintain referential integrity on a INSERT OR REPLACE given
> >it does not call the delete trigger on the offending rows?
>
> Please correct me if I'm wrong, but considering the two
> cases INSERT OR REPLACE handles for the referenced table:
>
> 1.there was no row with that primary key (PK)
>   the INSERT part of the statement is used,
>   any AFTER INSERT trigger is executed
>
> 2.there already was a row with that PK
>   the REPLACE part of the statement is used, so
>   DELETE, then INSERT.
>   After that, there still is a row with that PK.
>   There is no reason to trigger cascading deletes
>   in referring tables, or to forbid the deletion ...
>
> And considering INSERT OR REPLACE of rows in the referring
> table (the one with the foreign key), only the INSERT
> trigger has to fire to ensure the FK refers to an existing
> PF in the referred table ...
>
> ... I would say the DELETE TRIGGER doesn't have to fire on
> INSERT OR REPLACE.
> -- 
>   (  Kees Nuyt
>   )
> c[_]
> _______________________________________________
> sqlite-users mailing list
> sqlite-users@sqlite.org
> http://sqlite.org:8080/cgi-bin/mailman/listinfo/sqlite-users
_______________________________________________
sqlite-users mailing list
sqlite-users@sqlite.org
http://sqlite.org:8080/cgi-bin/mailman/listinfo/sqlite-users

Reply via email to