在MySQL中,我可以創建一個時間戳列,其價值被當其他列更改自動更新的表:自動更新timestamp列,沒有觸發器
CREATE TABLE t (ts TIMESTAMP DEFAULT CURRENT_TIMESTAMP
ON UPDATE CURRENT_TIMESTAMP);
什麼是最好的方式在SQL Server中做類似的事情?那麼在Oracle中呢?我可以做到這一點,而不使用觸發器?
在MySQL中,我可以創建一個時間戳列,其價值被當其他列更改自動更新的表:自動更新timestamp列,沒有觸發器
CREATE TABLE t (ts TIMESTAMP DEFAULT CURRENT_TIMESTAMP
ON UPDATE CURRENT_TIMESTAMP);
什麼是最好的方式在SQL Server中做類似的事情?那麼在Oracle中呢?我可以做到這一點,而不使用觸發器?
對於SQL Server,請查看rowversion。
然而,這樣只會給你行的「任意」版本,並不會提供您更新的實際時間戳:
的rowversion數據類型只是一個遞增的數字,並且不保存日期或時間。
據我所知,SQL Server中一個真正的時間戳版本是不可能沒有觸發器。
對於Oracle,甚至達到版本11gR2,列定義上的DEFAULT子句僅適用於在INSERT中省略時分配的值。觸發器似乎也是您在Oracle中唯一的選擇。
當您編寫觸發器時,請務必考慮多行更新!這在SQL服務器中很重要。 – HLGEM