2011-11-21 65 views
0

在MySQL中,我可以創建一個時間戳列,其價值被當其他列更改自動更新的表:自動更新timestamp列,沒有觸發器

CREATE TABLE t (ts TIMESTAMP DEFAULT CURRENT_TIMESTAMP 
        ON UPDATE CURRENT_TIMESTAMP); 

什麼是最好的方式在SQL Server中做類似的事情?那麼在Oracle中呢?我可以做到這一點,而不使用觸發器?

+0

當您編寫觸發器時,請務必考慮多行更新!這在SQL服務器中很重要。 – HLGEM

回答

4

對於SQL Server,請查看rowversion

然而,這樣只會給你行的「任意」版本,並不會提供您更新的實際時間戳:

的rowversion數據類型只是一個遞增的數字,並且不保存日期或時間。

據我所知,SQL Server中一個真正的時間戳版本是不可能沒有觸發器。

1

對於Oracle,甚至達到版本11gR2,列定義上的DEFAULT子句僅適用於在INSERT中省略時分配的值。觸發器似乎也是您在Oracle中唯一的選擇。