REPLACE 與 INSERT 類似,差異在於:若表中已存在相同主鍵或唯一索引的記錄,先刪除舊記錄再插入新記錄。
前提: 表必須有 PRIMARY KEY 或 UNIQUE 索引,否則行為等同 INSERT。
需同時擁有表的 INSERT 與 DELETE 權限。
回傳受影響行數 = 刪除行數 + 插入行數
C API 可用 mysql_affected_rows() 取得。
REPLACE [LOW_PRIORITY | DELAYED]
[INTO] tbl_name [(col_name,...)]
VALUES ({expr | DEFAULT},...),(...),...
-- 或 SET 語法
REPLACE [LOW_PRIORITY | DELAYED]
[INTO] tbl_name
SET col_name={expr | DEFAULT}, ...
-- 或從 SELECT
REPLACE [LOW_PRIORITY | DELAYED]
[INTO] tbl_name [(col_name,...)]
SELECT ...
SET col = col + 1 會被視為 DEFAULT(col) + 1)DELAYED 選項在某些版本中被忽略