避免重复插入数据
2010-11-02 14:38
169 查看
sqlite避免重复插入数据。
用insert语句插入数据,为避免重复插入又不打断数据处理。
首先要避免重复插入,就必须在插入时引发冲突。在表中设置了id字段,该字段为UNIQUE属性,当插入的id已存在时引发冲突。
引发冲突后insert会做一些处理,处理方式由OR字句定义。包含如下:
ROLLBACK
当发生约束冲突,立即ROLLBACK,即结束当前事务处理,命令中止并返回SQLITE_CONSTRAINT代码。若当前无活动事务(除了每一条命令创建的默认事务以外),则该算法与ABORT相同。
ABORT
当发生约束冲突,命令收回已经引起的改变并中止返回SQLITE_CONSTRAINT。但由于不执行ROLLBACK,所以前面的命令产生的改变将予以保留。缺省采用这一行为。
FAIL
当发生约束冲突,命令中止返回SQLITE_CONSTRAINT。但遇到冲突之前的所有改变将被保留。例如,若一条UPDATE语句在100行遇到冲突100th,前99行的改变将被保留,而对100行或以后的改变将不会发生。
IGNORE
当发生约束冲突,发生冲突的行将不会被插入或改变。但命令将照常执行。在冲突行之前或之后的行将被正常的插入和改变,且不返回错误信息。
REPLACE
当发生UNIQUE约束冲突,先存在的,导致冲突的行在更改或插入发生冲突的行之前被删除。这样,更改和插入总是被执行。命令照常执行且不返回错误信息。当发生NOT NULL约束冲突,导致冲突的NULL值会被字段缺省值取代。若字段无缺省值,执行ABORT算法
为避免操作打断,我选择了IGNORE。最后完整的用法如下:
INSERT OR IGNORE INTO troopstypes (id)values(2);
用insert语句插入数据,为避免重复插入又不打断数据处理。
首先要避免重复插入,就必须在插入时引发冲突。在表中设置了id字段,该字段为UNIQUE属性,当插入的id已存在时引发冲突。
引发冲突后insert会做一些处理,处理方式由OR字句定义。包含如下:
ROLLBACK
当发生约束冲突,立即ROLLBACK,即结束当前事务处理,命令中止并返回SQLITE_CONSTRAINT代码。若当前无活动事务(除了每一条命令创建的默认事务以外),则该算法与ABORT相同。
ABORT
当发生约束冲突,命令收回已经引起的改变并中止返回SQLITE_CONSTRAINT。但由于不执行ROLLBACK,所以前面的命令产生的改变将予以保留。缺省采用这一行为。
FAIL
当发生约束冲突,命令中止返回SQLITE_CONSTRAINT。但遇到冲突之前的所有改变将被保留。例如,若一条UPDATE语句在100行遇到冲突100th,前99行的改变将被保留,而对100行或以后的改变将不会发生。
IGNORE
当发生约束冲突,发生冲突的行将不会被插入或改变。但命令将照常执行。在冲突行之前或之后的行将被正常的插入和改变,且不返回错误信息。
REPLACE
当发生UNIQUE约束冲突,先存在的,导致冲突的行在更改或插入发生冲突的行之前被删除。这样,更改和插入总是被执行。命令照常执行且不返回错误信息。当发生NOT NULL约束冲突,导致冲突的NULL值会被字段缺省值取代。若字段无缺省值,执行ABORT算法
为避免操作打断,我选择了IGNORE。最后完整的用法如下:
INSERT OR IGNORE INTO troopstypes (id)values(2);
相关文章推荐
- sqlite避免重复插入数据以及插入同时又可更新已有的数据
- ORACLE 利用触发器避免数据重复插入
- MySQL: ON DUPLICATE KEY UPDATE 用法 避免重复插入数据
- MySQL批量插入遇上唯一索引避免方法(避免导入重复数据)
- 数据库并发插入避免重复数据的问题
- oracle 避免重复插入数据
- sql插入数据时,避免插入重复数据
- 用JSP向数据库中添加数据,避免插入空值,重复值
- sqlite避免重复插入数据
- jsp或struts如何避免Form重复提交,不然数据中的插入的纪录有重复的!
- mysql插入大量数据时避免重复记录出现
- mysql避免插入重复数据
- mysql中避免重复插入相同数据(insert if not exists)
- jsp或struts如何避免Form重复提交,不然数据中的插入的纪录有重复的!
- mysql忽略主键冲突、避免重复插入的几种方式
- 多表联合查询后去重复数据后重新插入第一张表解决办法
- MySQL防止重复插入唯一限制的数据
- Activity基类实现保存Bundle数据,避免空指针及重复劳动
- MySql避免重复插入记录方法(ignore,Replace,on duplicate key update,not exist)
- MySql避免重复插入记录方法(ignore,Replace,ON DUPLICATE KEY UPDATE)