SQLite中特殊的INSERT語句
在SQLite中,INSERT是基本語句,用來向表中插入數據。但是當表中存在字段存在唯一、非空、檢查、主鍵等約束時,插入的數據很容易和約束沖突,造成插入操作失敗。為了解決這類問題,SQLite提供集中特殊的INSERT語句。下面依次介紹一下:
(1)INSERT OR REPLACE語句:如果引起約束沖突,則取消插入操作。如果是與唯一、主鍵約束沖突,則將已存在的數據進行更新。如果是與非空約束操作,並且存在默認值設置,則將沖突的空列使用默認值替代,然后插入;否則,按照INSERT OR ABORT方式執行。如果是與檢查約束沖突,則按照INSERT OR ABORT執行。
(2)INSERT OR ABORT語句:如果引起約束沖突,則取消該插入操作。如果在一個事務中,不會回滾當前事務,繼續執行當前事務的后續操作。
(3)INSERT OR ROLLBACK語句:如果引起約束沖突,則取消該插入操作。如果在一個事務中,會回滾當前事務。
(4)INSERT OR FAIL語句:如果引起約束沖突,則取消該插入操作。如果在一個事務中,不會回滾當前事務,但會取消當前事務的后續操作。
(5)INSERT OR IGNORE語句:如果引起約束沖突,則取消該插入操作。如果在一個事務中,不會回滾當前事務,繼續執行當前事務的后續操作。與INSERT OR ABORT不同的,它不會觸發SQLITE_CONSTRAINT錯誤。
