ON CONFLICT子句

转载 2012年03月26日 18:43:31
 
 
 
 
 
 

ON CONFLICT子句

conflict-clause ::= ON CONFLICT conflict-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 on conflict子句

http://www.eoeandroid.com/thread-54765-1-1.html(来源) conflict-clause ::= ON CONFLICT conflict-algo...
  • hggliu
  • hggliu
  • 2015年01月25日 16:22
  • 787

CONFLICT (content): Merge conflict in manifest.xml

在用repo sync的时候出现这个问题,删掉merge冲突,还是无法解决
  • xzongyuan
  • xzongyuan
  • 2014年08月28日 10:07
  • 985

Git Pull Failed: CONFLICT (content): Merge conflict in camus-aggregator/camus-admin-web/src/main/web

今天使用idea+git提交项目的时候,我的操作过程是这样的commit -> pull  然后就在这个pull这出现了文件存在差异 我就对差异文件进行了修改,之后我再次pull的时候就出现了这种错...
  • u010591939
  • u010591939
  • 2015年07月07日 14:14
  • 756

where子句与having子句的区别

where子句:是在分组之前使用,表示从所有数据中筛选出部分数据,以完成分组的要求,                        在where子句中不允许使用统计函数,没有group by子句也可以...
  • q1054261752
  • q1054261752
  • 2015年11月08日 22:09
  • 451

高级sql学习——with子句!!!

使用WITH AS 语句可以为一个子查询语句块定义一个名称,使用这个子查询名称可以在查询语句的很多地方引用这个子查询。Oracle 数据库像对待内联视图或临时表一样对待被引用的子查询名称,从而起到一定...
  • zq9017197
  • zq9017197
  • 2010年10月13日 15:40
  • 1829

git conflict remove

Resolving a merge conflict from the command line This guide demonstrates how to resolve s...
  • mmggcc
  • mmggcc
  • 2015年08月27日 10:45
  • 716

如何解决merge conflict的方法

如何解决merge conflict的方法 首先在pull的时候加上rebase,解决conflict,最后push git pull --rebase origin remote if...
  • chenglinhust
  • chenglinhust
  • 2017年01月06日 22:38
  • 476

关于eclipse中同步代码报错checkout conflict with files的解决方法

测试环境需要自己维护,某天同步代码的时候遇到checkout conflict with files错误,自己要面子查资料无果。问了开发人员,说是修改了配置文件造成冲突,然后告诉了我解决方法。今天再一...
  • u010051887
  • u010051887
  • 2016年07月25日 08:52
  • 9947

SVN报错Node remains in conflict解决办法

处理方式: #cd /home/svn/app/ #mkdir /root/bak #mv /home/svn/app/* /root/bak/ #svn revert . ...
  • sinat_28585351
  • sinat_28585351
  • 2016年12月30日 09:37
  • 8036

Warning:Conflict with dependency 'com.android.support:support-annotations'问题解决

Warning:Conflict with dependency 'com.android.support:support-annotations' 问题解决方法 在Android Studio...
  • achang21
  • achang21
  • 2016年08月15日 11:25
  • 2369
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:ON CONFLICT子句
举报原因:
原因补充:

(最多只允许输入30个字)