Hello Tobi,
See http://www.sqlite.org/lang_conflict.html, near the bottom:
"When this conflict resolution strategy deletes rows in order to satisfy
a constraint, it does not invoke delete triggers on those rows. This
behavior might change in a future release."
I would be interested if an UPDATE - Trigger is invoked instead. Perhaps
you could try it?
Martin
schachtobi wrote:
> Hello,
>
> i have a question. In my application I issue an insert or replace
> operation. It seems that the delete trigger is not executed here. Is
> there a special replace trigger?
>
> Thanks for your help.
>
> regards,
> Tobias
>
> Here my Session:
> sqlite> select * from ch;
> 1|100_4664.JPG|103|94|98|64
> 2|100_4665.JPG|94|87|88|64
> sqlite> select chId from blobdata;
> 1
> 2
> sqlite> insert or replace into ch(fname) values ('100_4664.JPG');
> sqlite> select chId from blobdata;
> 1
> 2
>
>
> My scheme is:
>
> table|ch|ch|2|CREATE TABLE ch(id INTEGER PRIMARY KEY, fname TEXT
> UNIQUE, red INTEGER, green INTEGER, blue INTEGER, dsize INTEGER)
>
> index|sqlite_autoindex_ch_1|ch|3|
>
> table|blobdata|blobdata|4|CREATE TABLE blobdata(id INTEGER PRIMARY
> KEY, data BLOB, chId INTEGER)
>
> trigger|fkd|ch|0|CREATE TRIGGER fkd
> BEFORE DELETE ON ch
> FOR EACH ROW BEGIN
> DELETE from blobdata WHERE chId = OLD.id;
> END
>
> trigger|fki|blobdata|0|CREATE TRIGGER fki
> BEFORE INSERT ON blobdata
> FOR EACH ROW BEGIN
> SELECT RAISE(ROLLBACK, 'insert invalid')
> WHERE (SELECT id FROM ch WHERE id = NEW.chId)
> IS NULL;
> END
>
> index|chIdIdx|blobdata|5|CREATE UNIQUE INDEX chIdIdx ON blobdata(chId)
>
>
>
> _______________________________________________
> sqlite-users mailing list
> [email protected]
> http://sqlite.org:8080/cgi-bin/mailman/listinfo/sqlite-users
>
>
_______________________________________________
sqlite-users mailing list
[email protected]
http://sqlite.org:8080/cgi-bin/mailman/listinfo/sqlite-users