SQLite中特殊的INSERT語(yǔ)句
在SQLite中阴孟,INSERT是基本語(yǔ)句晌纫,用來向表中插入數(shù)據(jù)。但是當(dāng)表中存在字段存在唯一永丝、非空锹漱、檢查、主鍵等約束時(shí)慕嚷,插入的數(shù)據(jù)很容易和約束沖突哥牍,造成插入操作失敗。為了解決這類問題喝检,SQLite提供集中特殊的INSERT語(yǔ)句嗅辣。下面依次介紹一下:
(1)INSERT OR REPLACE語(yǔ)句:如果引起約束沖突,則取消插入操作挠说。如果是與唯一澡谭、主鍵約束沖突,則將已存在的數(shù)據(jù)進(jìn)行更新损俭。如果是與非空約束操作蛙奖,并且存在默認(rèn)值設(shè)置,則將沖突的空列使用默認(rèn)值替代撩炊,然后插入外永;否則,按照INSERT OR ABORT方式執(zhí)行拧咳。如果是與檢查約束沖突伯顶,則按照INSERT OR ABORT執(zhí)行。
(2)INSERT OR ABORT語(yǔ)句:如果引起約束沖突骆膝,則取消該插入操作祭衩。如果在一個(gè)事務(wù)中,不會(huì)回滾當(dāng)前事務(wù)阅签,繼續(xù)執(zhí)行當(dāng)前事務(wù)的后續(xù)操作掐暮。
(3)INSERT OR ROLLBACK語(yǔ)句:如果引起約束沖突,則取消該插入操作政钟。如果在一個(gè)事務(wù)中路克,會(huì)回滾當(dāng)前事務(wù)樟结。
(4)INSERT OR FAIL語(yǔ)句:如果引起約束沖突,則取消該插入操作精算。如果在一個(gè)事務(wù)中瓢宦,不會(huì)回滾當(dāng)前事務(wù),但會(huì)取消當(dāng)前事務(wù)的后續(xù)操作灰羽。
(5)INSERT OR IGNORE語(yǔ)句:如果引起約束沖突驮履,則取消該插入操作。如果在一個(gè)事務(wù)中廉嚼,不會(huì)回滾當(dāng)前事務(wù)玫镐,繼續(xù)執(zhí)行當(dāng)前事務(wù)的后續(xù)操作。與INSERT OR ABORT不同的怠噪,它不會(huì)觸發(fā)SQLITE_CONSTRAINT錯(cuò)誤恐似。