Oh, thanks for pointing me to this statement!
Didn't know that 'OR IGNORE' is an alias of 'ON CONFLICT IGNORE'.
17 February 2016, 17:32:32, by "Dan Kennedy" <danielk1977 at gmail.com>:
> On 02/17/2016 08:47 PM, Paul wrote:
> > Let's say I have a following database structure:
> >
> > CREATE TABLE properties
> > (
> > name TEXT NOT NULL,
> > value TEXT,
> > PRIMARY KEY(name)
> > ) WITHOUT ROWID;
> >
> > CREATE TABLE foo
> > (
> > id TEXT NOT NULL,
> > PRIMARY KEY(id)
> > );
> >
> > CREATE TRIGGER foo_inserted
> > AFTER INSERT ON foo
> > BEGIN
> > INSERT OR IGNORE INTO properties(name, value) VALUES('foo_inserts', 0);
> > UPDATE properties SET value = value + 1 WHERE name = 'foo_inserts';
> > END;
> >
> > With a clean database I perform set of queries:
> >
> > INSERT OR REPLACE INTO foo(id) VALUES(1);
> > INSERT OR REPLACE INTO foo(id) VALUES(2);
> > INSERT OR REPLACE INTO foo(id) VALUES(3);
> >
> ...
> > I've made different test cases and came to a conclusion that 'OR IGNORE'
> > clause inside
> > a query within a body of trigger suddenly works as if it was 'OR REPLACE'.
>
> The ON CONFLICT clause of the outer statement overrides the ON CONFLICT
> clause of the statement within the trigger:
>
> https://www.sqlite.org/mark/lang_createtrigger.html?However+if+an*used+instead
>
> (scroll the page down a bit to see the highlighted statement)
>
> Dan.
>
>
> _______________________________________________
> sqlite-users mailing list
> sqlite-users at mailinglists.sqlite.org
> http://mailinglists.sqlite.org/cgi-bin/mailman/listinfo/sqlite-users