On Tue, 17 Nov 2015 22:29:10 -0500
Richard Hipp <drh at sqlite.org> wrote:

> With CHECK, and UNIQUE, and NOT NULL constraints, you do know that the
> constraint has failed right away.  And for those constraints, SQLite
> does provide more detail about exactly which constraint failed.  But
> for FK constraints, you never know if a constraint that is failing
> right now might be resolved before the end of the transaction.

As a matter of fact, violation of UNIQUE & PK constraints is enforced
rather too strictly in SQLite.  Any UPDATE statement that modifie more
than one row of a UNIQUE column can fail because two rows may
*transiently* have the same value.  SQLite will fail the statement
even though the completed transactation leaves the constraint
unviolated.  

        sqlite> create table T(t int not null primary key);
        sqlite> insert into T values (1), (2);
        sqlite> update T set t = t+1;
        Error: UNIQUE constraint failed: T.t

--jkl

Reply via email to