sqlite"插入或替换"是否与AUTOINCREMENT主键一起使用?

dd6*_*619 8 database sqlite android

我有一个数据库,我在其中创建了一个名为"SectionDetails"的表.在此表中,我已将"id"设置为具有AUTOINCREMENT property 的主键.我将数据插入此表中.

但是,我来到了我需要检查我插入的记录是否已经存在的情况(如果记录存在,则将其替换为相同的值或跳过它,如果记录不存在则插入新的记录).

但是当我尝试插入具有相同列值的记录时,它会增加主键并再次插入相同的行而不是替换.

所以,我的问题是 - sqlite"插入或替换"是否适用于AUTOINCREMENT主键?

我正在使用以下查询:

insert or replace into SectionDetails(Name,Month,Title,Url)values('Deepak',"August","None","www.dd619.com")
Run Code Online (Sandbox Code Playgroud)

这里的列"id"没有出现,因为它是一个带有AUTOINCREMENT属性的主键.

laa*_*lto 19

您需要向其他列添加一些唯一约束才能使其工作,即使这样您也会更改ID.

insert or replace实际上是一个insert解决on conflict replace冲突的战略.也就是说,当插入会违反某些约束时,首先删除所有冲突的行,然后才进行插入.autoincrement然后,该机制将为您生成新的ID值.

有关更多信息,请访问:http://www.sqlite.org/lang_conflict.html


小智 8

简答:不,不.

只有在指定主键时,"插入或替换"才有效.通过您描述的设置中的自动增量,这不起作用.

可能最快的方法是为您的用例创建自定义插入/更新方法.