我想用兩個日期更新一條記錄,如果我沒有更新的新值,就會使現有數據完好無損。如何更新SQL中的選擇性字段(保留一些不變)?
下面是一個示例表記錄:
id last_foo last_bar
-- ---------- ----------
1 2010-05-30 2010-05-30
,我使用查詢:
UPDATE sampledates
SET last_foo = @LastFoo,
last_bar = @LastBar
WHERE id = @ID;
如果我爲空的日期時間LastFoo
或LastBar
是空的,我想保持現有的SQL值不變,否則更新。
例如,假設我更新這個記錄使用下面的值(這是C#,但任何語言適用):
DateTime? LastFoo = new DateTime('2010-06-04');
DateTime? LastBar = null;
我想記錄則是:
id last_foo last_bar
-- ---------- ----------
1 2010-06-04 2010-05-30
我知道我可以改變我的查詢文本,以省略第二列,如果值爲空,但我想知道是否有一種方法,我可以保持原樣查詢並指定我不更改指定的列。
我檢查HTTP:// stackoverflow.com/questions/1637901/best-practise-when-updating-individual-fields-in-a-database-record但它並不完全相同。 – JYelton 2010-06-04 21:45:13
你使用哪個數據庫和版本? – 2010-06-04 21:48:37
@Mark:DATETIME表示MySQL或SQL Server,但提供的所有答案都是不可知的 – 2010-06-04 21:50:31