ente/mobile/lib/utils/sqlite_util.dart

40 lines
1.9 KiB
Dart

enum SqliteAsyncConflictAlgorithm {
/// When a constraint violation occurs, an immediate ROLLBACK occurs,
/// thus ending the current transaction, and the command aborts with a
/// return code of SQLITE_CONSTRAINT. If no transaction is active
/// (other than the implied transaction that is created on every command)
/// then this algorithm works the same as ABORT.
rollback,
/// When a constraint violation occurs,no ROLLBACK is executed
/// so changes from prior commands within the same transaction
/// are preserved. This is the default behavior.
abort,
/// When a constraint violation occurs, the command aborts with a return
/// code SQLITE_CONSTRAINT. But any changes to the database that
/// the command made prior to encountering the constraint violation
/// are preserved and are not backed out.
fail,
/// When a constraint violation occurs, the one row that contains
/// the constraint violation is not inserted or changed.
/// But the command continues executing normally. Other rows before and
/// after the row that contained the constraint violation continue to be
/// inserted or updated normally. No error is returned.
ignore,
/// When a UNIQUE constraint violation occurs, the pre-existing rows that
/// are causing the constraint violation are removed prior to inserting
/// or updating the current row. Thus the insert or update always occurs.
/// The command continues executing normally. No error is returned.
/// If a NOT NULL constraint violation occurs, the NULL value is replaced
/// by the default value for that column. If the column has no default
/// value, then the ABORT algorithm is used. If a CHECK constraint
/// violation occurs then the IGNORE algorithm is used. 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.
replace,
}