Small. Fast. Reliable.
Choose any three.

SQLite Requirement Matrix Details
lang_conflict.html

Index Summary Markup Original


R-31884-19145-46591-63123-39712-55381-35148-20037 tcl slt th3 src

The syntax for the ON CONFLICT clause is as shown above for the CREATE TABLE command.

th3/req1/conflict01.test:14

/* IMP: R-31884-19145 */
# EVIDENCE-OF: R-31884-19145 The syntax for the ON CONFLICT clause is as
# shown above for the CREATE TABLE command.

R-26917-59594-53851-11147-17067-15964-43582-37189 tcl slt th3 src

For the INSERT and UPDATE commands, the keywords "ON CONFLICT" are replaced by "OR" so that the syntax reads more naturally.

th3/req1/conflict01.test:17

/* IMP: R-26917-59594 */
# EVIDENCE-OF: R-26917-59594 For the INSERT and UPDATE commands, the
# keywords "ON CONFLICT" are replaced by "OR" so that the syntax reads
# more naturally.

R-55069-12282-57104-06256-56752-59196-49409-09981 tcl slt th3 src

The default conflict resolution algorithm is ABORT.

th3/req1/conflict03.test:10

/* IMP: R-55069-12282 */
# EVIDENCE-OF: R-55069-12282 The default conflict resolution algorithm
# is ABORT.

R-31881-13880-39891-17539-21926-06368-53167-38054 tcl slt th3 src

When an applicable constraint violation occurs, the ROLLBACK resolution algorithm aborts the current SQL statement with an SQLITE_CONSTRAINT error and rolls back the current transaction.

th3/req1/conflict01.test:57

/* IMP: R-31881-13880 */
# EVIDENCE-OF: R-31881-13880 When an applicable constraint violation
# occurs, the ROLLBACK resolution algorithm aborts the current SQL
# statement with an SQLITE_CONSTRAINT error and rolls back the current
# transaction.

R-42089-41020-28633-04847-35892-58431-48484-20358 tcl slt th3 src

If no transaction is active (other than the implied transaction that is created on every command) then the ROLLBACK resolution algorithm works the same as the ABORT algorithm.

th3/req1/conflict01.test:237

/* IMP: R-42089-41020 */
# EVIDENCE-OF: R-42089-41020 If no transaction is active (other than the
# implied transaction that is created on every command) then the
# ROLLBACK resolution algorithm works the same as the ABORT algorithm.

R-47224-48532-62948-64824-54403-32645-39277-62522 tcl slt th3 src

When an applicable constraint violation occurs, the ABORT resolution algorithm aborts the current SQL statement with an SQLITE_CONSTRAINT error and backs out any changes made by the current SQL statement; but changes caused by prior SQL statements within the same transaction are preserved and the transaction remains active.

th3/req1/conflict01.test:375

/* IMP: R-47224-48532 */
# EVIDENCE-OF: R-47224-48532 When an applicable constraint violation
# occurs, the ABORT resolution algorithm aborts the current SQL
# statement with an SQLITE_CONSTRAINT error and backs out any changes
# made by the current SQL statement; but changes caused by prior SQL
# statements within the same transaction are preserved and the
# transaction remains active.

R-45095-63572-26689-30740-64749-16083-48841-09127 tcl slt th3 src

When an applicable constraint violation occurs, the FAIL resolution algorithm aborts the current SQL statement with an SQLITE_CONSTRAINT error.

th3/req1/conflict01.test:555

/* IMP: R-45095-63572 */
# EVIDENCE-OF: R-45095-63572 When an applicable constraint violation
# occurs, the FAIL resolution algorithm aborts the current SQL statement
# with an SQLITE_CONSTRAINT error.

R-31882-08811-51062-63000-47445-51971-26333-04918 tcl slt th3 src

But the FAIL resolution does not back out prior changes of the SQL statement that failed nor does it end the transaction.

th3/req1/conflict01.test:559

/* IMP: R-31882-08811 */
# EVIDENCE-OF: R-31882-08811 But the FAIL resolution does not back out
# prior changes of the SQL statement that failed nor does it end the
# transaction.

R-48584-41074-15154-28473-43969-34090-29401-03268 tcl slt th3 src

For example, if an UPDATE statement encountered a constraint violation on the 100th row that it attempts to update, then the first 99 row changes are preserved but changes to rows 100 and beyond never occur.

th3/req1/conflict01.test:734

/* IMP: R-48584-41074 */
# EVIDENCE-OF: R-48584-41074 For example, if an UPDATE statement
# encountered a constraint violation on the 100th row that it attempts
# to update, then the first 99 row changes are preserved but changes to
# rows 100 and beyond never occur.

R-50299-05307-25514-21202-52371-12958-26129-48124 tcl slt th3 src

When an applicable constraint violation occurs, the IGNORE resolution algorithm skips the one row that contains the constraint violation and continues processing subsequent rows of the SQL statement as if nothing went wrong.

th3/req1/conflict01.test:789

/* IMP: R-50299-05307 */
# EVIDENCE-OF: R-50299-05307 When an applicable constraint violation
# occurs, the IGNORE resolution algorithm skips the one row that
# contains the constraint violation and continues processing subsequent
# rows of the SQL statement as if nothing went wrong.

R-13199-64588-45721-29417-06985-29231-64898-26576 tcl slt th3 src

No error is returned for uniqueness, NOT NULL, and UNIQUE constraint errors when the IGNORE conflict resolution algorithm is used.

th3/req1/conflict01.test:794

/* IMP: R-13199-64588 */
# EVIDENCE-OF: R-13199-64588 No error is returned for uniqueness, NOT
# NULL, and UNIQUE constraint errors when the IGNORE conflict resolution
# algorithm is used.

R-18996-06026-12732-36881-04380-02078-38106-17370 tcl slt th3 src

However, the IGNORE conflict resolution algorithm works like ABORT for foreign key constraint errors.

/* IMP: R-18996-06026 */
# EVIDENCE-OF: R-18996-06026 However, the IGNORE conflict resolution
# algorithm works like ABORT for foreign key constraint errors.

R-54702-17780-20915-24655-06816-59842-01536-54593 tcl slt th3 src

When a UNIQUE or PRIMARY KEY constraint violation occurs, the REPLACE algorithm deletes pre-existing rows that are causing the constraint violation prior to inserting or updating the current row and the command continues executing normally.

th3/req1/conflict02.test:54

/* IMP: R-54702-17780 */
# EVIDENCE-OF: R-54702-17780 When a UNIQUE or PRIMARY KEY constraint
# violation occurs, the REPLACE algorithm deletes pre-existing rows that
# are causing the constraint violation prior to inserting or updating
# the current row and the command continues executing normally.

R-12527-00403-29905-17103-05546-05821-61371-29057 tcl slt th3 src

If a NOT NULL constraint violation occurs, the REPLACE conflict resolution replaces the NULL value with the default value for that column, or if the column has no default value, then the ABORT algorithm is used.

th3/req1/conflict02.test:114

/* IMP: R-12527-00403 */
# EVIDENCE-OF: R-12527-00403 If a NOT NULL constraint violation occurs,
# the REPLACE conflict resolution replaces the NULL value with the
# default value for that column, or if the column has no default value,
# then the ABORT algorithm is used.

R-26383-51744-00561-00695-36382-45480-37936-10675 tcl slt th3 src

If a CHECK constraint or foreign key constraint violation occurs, the REPLACE conflict resolution algorithm works like ABORT.

src/insert.c:1866   th3/req1/conflict02.test:159

/* IMP: R-26383-51744 */
# EVIDENCE-OF: R-26383-51744 If a CHECK constraint or foreign key
# constraint violation occurs, the REPLACE conflict resolution algorithm
# works like ABORT.

R-23498-38103-14789-32362-20893-18131-57271-11278 tcl slt th3 src

When the REPLACE conflict resolution strategy deletes rows in order to satisfy a constraint, delete triggers fire if and only if recursive triggers are enabled.

th3/req1/conflict02.test:199

/* IMP: R-23498-38103 */
# EVIDENCE-OF: R-23498-38103 When the REPLACE conflict resolution
# strategy deletes rows in order to satisfy a constraint, delete
# triggers fire if and only if recursive triggers are enabled.

R-40235-17052-28075-57665-18059-48204-40601-49682 tcl slt th3 src

The update hook is not invoked for rows that are deleted by the REPLACE conflict resolution strategy.

th3/req1/conflict02.test:206

/* IMP: R-40235-17052 */
# EVIDENCE-OF: R-40235-17052 The update hook is not invoked for rows
# that are deleted by the REPLACE conflict resolution strategy.

R-37019-57602-33488-54627-46176-35899-62282-07201 tcl slt th3 src

Nor does REPLACE increment the change counter.

th3/req1/conflict02.test:203

/* IMP: R-37019-57602 */
# EVIDENCE-OF: R-37019-57602 Nor does REPLACE increment the change
# counter.

R-33948-22286-15597-10485-25275-41982-01072-17156 tcl slt th3 src

The algorithm specified in the OR clause of an INSERT or UPDATE overrides any algorithm specified in a CREATE TABLE.

th3/req1/conflict04.test:12

/* IMP: R-33948-22286 */
# EVIDENCE-OF: R-33948-22286 The algorithm specified in the OR clause of
# an INSERT or UPDATE overrides any algorithm specified in a CREATE
# TABLE.

R-05239-12850-29861-48267-58259-09367-64321-59571 tcl slt th3 src

If no algorithm is specified anywhere, the ABORT algorithm is used.

th3/req1/conflict03.test:13

/* IMP: R-05239-12850 */
# EVIDENCE-OF: R-05239-12850 If no algorithm is specified anywhere, the
# ABORT algorithm is used.