package com.litesuits.orm.db.model;
/**
* @date 2014-08-07
*/
public enum ConflictAlgorithm {
/**
* The algorithm specified in the OR clause of an INSERT or UPDATE overrides
* any algorithm specified in a CREATE TABLE. If no algorithm is specified
* anywhere, the ABORT algorithm is used.
*/
None(" "),
/**
* 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. 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.
*/
Rollback(" OR ROLLBACK "),
/**
* 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. This is the default behavior and the behavior
* specified by the SQL standard.
*/
Abort(" OR ABORT "),
/**
* When an applicable constraint violation occurs, the FAIL resolution algorithm
* aborts the current SQL statement with an SQLITE_CONSTRAINT error. But the FAIL
* resolution does not back out prior changes of the SQL statement that failed nor
* does it end the transaction. 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.
*/
Fail(" OR FAIL "),
/**
* 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. Other
* rows before and after the row that contained the constraint violation are
* inserted or updated normally. No error is returned when the IGNORE conflict
* resolution algorithm is used.
*/
Ignore(" OR IGNORE "),
/**
* When a UNIQUE 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. 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. If a CHECK constraint violation
* occurs, the REPLACE conflict resolution algorithm always works like ABORT.
*/
Replace(" OR REPLACE ");
private String algorithm;
ConflictAlgorithm(String algorithm) {
this.algorithm = algorithm;
}
public String getAlgorithm() {
return algorithm;
}
}