SQLite中特殊的INSERT語(yǔ)句

SQLite中特殊的INSERT語(yǔ)句

在SQLite中,INSERT是基本語(yǔ)句,用來(lái)向表中插入數(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ò)誤。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • [TOC] SQL語(yǔ)句 表相關(guān)語(yǔ)句 創(chuàng)建表 temp, temporary:表示創(chuàng)建的表是臨時(shí)表,只在當(dāng)前會(huì)話有效...
    老干媽拌飯閱讀 932評(píng)論 0 0
  • 官網(wǎng):http://www.sqlite.org/lang.html (他人的中文翻譯http://blog.cs...
    liboxiang閱讀 4,075評(píng)論 0 6
  • 這個(gè)SQLite快速入門教程教你如何有效地開始學(xué)習(xí)并使用SQLite。通過(guò)本教程的實(shí)踐操作學(xué)習(xí)之后,相信你應(yīng)該可以...
    易百教程閱讀 36,633評(píng)論 1 67
  • 事務(wù)定義了一組SQL命令的邊界,這組命令或者作為一個(gè)整體被全部執(zhí)行,或者都不執(zhí)行,這稱為數(shù)據(jù)庫(kù)完整性的原子性原...
    我系哆啦閱讀 1,190評(píng)論 0 9
  • 師母打電話來(lái),說(shuō)是腰部疼痛兩天,不知咋回事。我順便買了中午的菜和面就過(guò)去了??囱可阅[,還是去年扭傷的地方。...
    飄逸的云5812閱讀 2,651評(píng)論 1 1

友情鏈接更多精彩內(nèi)容