ON CONFLICT子句
conflict-clause::= |
ON CONFLICTconflict-algorithm
|
conflict-algorithm::= |
ROLLBACK|ABORT|FAIL|IGNORE|REPLACE
|
ON CONFLICT子句不是独立的SQL命令。这是一条可以出现在许多其他SQL命令中的非标准的子句。由于它并不是标准的SQL语言,这里单独介绍它。
ON CONFLICT子句的语法在如上的CREATE TABLE命令中示出。对于INSERT和UPDATE,关键词"ON CONFLICT"由"OR"替代,这样语法显得自然。例如,不用写"INSERT ON CONFLICT IGNORE"而是"INSERT OR IGNORE".二者表示相同的意思。
ON CONFLICT子句定义了解决约束冲突的算法。有五个选择:ROLLBACK, ABORT, FAIL, IGNORE, 和REPLACE.缺省方案是ABORT.选项含义如下:
ROLLBACK
当发生约束冲突,立即ROLLBACK,即结束当前事务处理,命令中止并返回SQLITE_CONSTRAINT代码。若当前无活动事务(除了每一条命令创建的默认事务以外),则该算法与ABORT相同。
ABORT
当发生约束冲突,命令收回已经引起的改变并中止返回SQLITE_CONSTRAINT。但由于不执行ROLLBACK,所以前面的命令产生的改变将予以保留。缺省采用这一行为。
FAIL
当发生约束冲突,命令中止返回SQLITE_CONSTRAINT。但遇到冲突之前的所有改变将被保留。例如,若一条UPDATE语句在100行遇到冲突100th,前99行的改变将被保留,而对100行或以后的改变将不会发生。
IGNORE
当发生约束冲突,发生冲突的行将不会被插入或改变。但命令将照常执行。在冲突行之前或之后的行将被正常的插入和改变,且不返回错误信息。
REPLACE
当发生UNIQUE约束冲突,先存在的,导致冲突的行在更改或插入发生冲突的行之前被删除。这样,更改和插入总是被执行。命令照常执行且不返回错误信息。当发生NOT NULL约束冲突,导致冲突的NULL值会被字段缺省值取代。若字段无缺省值,执行ABORT算法。
当冲突应对策略为满足约束而删除行时,它不会调用删除触发器。但在新版中这一特性可能被改变。
INSERT或UPDATE的OR子句定义的算法会覆盖CREATE TABLE所定义的。ABORT算法将在没有定义任何算法时缺省使用。
|
相关推荐
SQLite的SQL语法 SQLite库可以解析大部分标准SQL语言。但它也省去了一些特性 并且加入了一些自己的新特性。...INSERT ON CONFLICT子句 PRAGMA REINDEX REPLACE ROLLBACK TRANSACTION SELECT UPDATE VACUUM
插入测试用例 Peter Geoghegan - 这些测试用例旨在对为 PostgreSQL 提出的 upsert 功能进行冒烟测试。 完整细节: 当前补丁状态的好总结: 这些测试还可以粗略地了解不同实现的比较,就其性能特征(实现 #1 和 #...
SVN怎么解决文件冲突conflict
Hierarchical Graph Models for Conflict Resolution 冲突消解的层次图模型
In the Wireless Sensor Network, a new MAC protocol: one-persistent CSMA protocol .with monitoring functions and multichannel mechanism for Wireless Sensor Network .based on conflict resolution ...
Apache Ant操作手册,ant使用方法
conflict:冲突
以CDCL(conflict driven clause learning)完备算法为框架,在子句删除环节形成了BJL删除算法。通过测试2017年SAT国际竞赛例,对新改进的版本与原版求解器进行了对比实验。实验表明,所提策略可显著提高求解器的...
【高中新课标同步用书】高中英语 unit23conflict(pdf)北师大版选修8
ecshop jquery transport conflict
java运行依赖jar包
A climate of conflict.doc
y: Analysis of Conflict+Game Theory for Applied Economists:北大光华学习资料,翁盒老师主讲 高级微观经 济专题 北大光华 翁翕老师主讲 Topics in Advanced Micro economics 更详细的内容,请参考下面的“内容...
它包含了简单的解释就可以使工作场所中的人付诸实践的好主意,这些人不仅要管理通常发生的冲突,而且要预防冲突。
New Technologies and the Law of Armed Conflict
前端大厂最新面试题-conflict.docx
git-resolve-conflict <strategy> <filename> 使用给定的策略(-我们,-他们的,-联盟)仅解决一个文件中的合并冲突 git resolve-conflict --ours package.jsongit resolve-conflict --theirs package.jsongit ...
Global Conflict Blue是一款类似于Fleet Command和Harpoon的实时3D海军和空战模拟游戏。