我已經讀完了這一點:是否可以插入一行,但只有當值已更改?
How do I insert into a database only if a value has changed?
所以我的問題是非常密切的,但它不是exaclty相同。
我有4個 「主要」 列(即我有我的所有表的4相同的列)的表:
id
- INT - AUTOINCid_origin
- INT - ID,當第一記錄的創建date_v_start
- 日期時間 - 啓動記錄date_v_end
的有效日期 - 日期時間 - 記錄的有效期結束(如果NULL
這是當前「有效」的記錄)
下面是特定於該表中的某些其他領域: - summary
- 文本 - detail
- 文本
知道這一點,當我有一些已被改變成表,這是我做的:
- 我更新當前記錄的
date_v_end
爲 「NOW()」 - 我插入一個新的記錄,與
date_v_start
=以前的 =date_v_end
=NULL
和(當然)新值summary
和detail
。
我的問題是,如果summary
和detail
值都沒有改變,我不希望插入新的記錄,這是浪費時間和硬盤驅動器的空間。
有沒有一種方法(如果可能的話在一杆)做這樣的事情:
「如果summary<>'a value' or detail<>'another value' then update this record and insert this new one
」
?
所以,我的問題,我上面提供的鏈接之間的區別是: - 有超過一個字段比較 - 有兩個請求 - 我想使它在如果請求可能。
您可以在應用程序中編寫邏輯,使用存儲過程或使用觸發器。哪些是可以的? – Jon 2012-04-21 19:07:08
可能使用觸發器,或使用存儲過程。如果可能的話,我希望兼容'mysql'和'postgresql' – 2012-04-21 19:08:22