2
如果我沒有錯,「插入或更新」語句在Oracle中可用。如果主鍵不存在,則可以創建新行,否則更新該行。或者只能使用一些存儲過程或存儲功能?MySQL或SQLite是否支持「插入或更新」語句?
如果我沒有錯,「插入或更新」語句在Oracle中可用。如果主鍵不存在,則可以創建新行,否則更新該行。或者只能使用一些存儲過程或存儲功能?MySQL或SQLite是否支持「插入或更新」語句?
的MySQL:
INSERT [LOW_PRIORITY | DELAYED | HIGH_PRIORITY] [IGNORE]
[INTO] tbl_name [(col_name,...)]
{VALUES | VALUE} ({expr | DEFAULT},...),(...),...
[ ON DUPLICATE KEY UPDATE
col_name=expr
[, col_name=expr] ... ]
SQLite的,你可以使用ON CONFLICT替換
- 見http://www.sqlite.org/lang_conflict.html
REPLACE當一個UNIQUE限制 衝突發生時,更換 算法刪除預先存在的行 導致約束插入之前違規或更新當前行的 ,並且 命令繼續正常執行。 如果違反NOT NULL約束 發生時,他與該列, 默認值或者如果該列沒有缺省值,則使用 中止算法REPLACE衝突 決議替代NULL值 。如果發生了一個 CHECK約束衝突, 替換衝突解決算法 總是像ABORT一樣工作。
當REPLACE衝突解決 策略刪除行,以滿足 約束,當且僅當遞歸觸發器 啓用刪除觸發器 火災。
更新掛鉤不被 行調用,該行由REPLACE 衝突解決策略刪除。 REPLACE也不會增加更改計數器。 此段落中定義的例外行爲可能會在未來的版本中發生變化 。
你能舉個例子嗎?也許我不明白。當它發現衝突時,它總是進行刪除 - >插入或考慮進行更新?它將在什麼時候發佈(如果是)只有更新? – StErMi 2012-01-06 17:45:41