INSERT OR REPLACE INTO Employee (id, name, role)
VALUES (1, 'Mike', 'CEO');
不過這時候有其他欄位(ex: depart)時,就會自動帶入null。
假設我們要保留 depart 這個欄位原始值,就可以改成這樣:
INSERT OR REPLACE INTO Employee (id, name, role, depart)
VALUES (1, 'John Foo', 'CEO',
(SELECT depart FROM Employee WHERE id = 1)
);
上面SQL語法:當id=1存在時,depart則會保留舊的,其他的值會被更新。
或是另一種寫法:
INSERT OR REPLACE INTO Employee (id, name, role, depart)
VALUES (1, 'John Foo', 'CEO',
COALESCE((SELECT depart FROM Employee WHERE id = 1), "Cleaning")
);
跟前一個差別在於當id存在時,depart會保留舊的,而當id不存在時,depart則為是"Cleaning"。

0 意見:
張貼留言