Copyright © Mike's Blog
Design by Dzignine
2013年12月5日 星期四

SQLite 小記

在我們要INSERT資料時,如果資料不存在時就新增,反之,存在的話就覆寫過去,這時候就常會使用到REPLACE INTO這個指令如下:

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 意見:

張貼留言