作者flakchen (flak)
看板Database
標題Re: [SQL ] SQL SERVER 2005 新增修改時間的問題
時間Tue Jul 10 12:04:34 2007
※ 引述《taikobo (有比扯鈴扯嗎?)》之銘言:
: 但的確可以在每次UPDATE時,依照判斷條件ID去更新我的UPDATE_DATE的時間
: 不過用了以後發現這個東西...只是把判斷程式寫在SQL Server上
: 感覺跟寫程式UPDATE時把UPDATE_DATE欄位帶入GETDATE()是同一個意思吧?
所以...我後來也都直接在更新式子裡面寫 ^^|||
這樣有一個好處,是我會順便把更新者的UserID寫到資料行中
可以知道最後一次的更改者是誰
寫Trigger也是有好處啦,至少你不用擔心每一支程式有沒有忘記更新時間
Trigger主要的缺點是鎖定程度太強,資料量大時很容易把相關資料表都鎖死
所以我不喜歡用。不過如果你的資料表不是幾十萬筆以上的話,大概不用
考慮這點
: 其中的差別只是寫在SQL Server上還是程式裡而已...@@
: 另外感謝grence兄提供方法,可惜在下資質駑鈍
: 我實在看不懂...慚愧;但還是感謝你的幫助^^
他的作法是建立欄位時,把資料型態就直接設成timestamp
這個欄位會是一個二進位資料,但每次資料行異動時,就會跟著變動
但問題是....
「SQL Server timestamp 資料類型只處理時間或日期。SQL Server timestamp 值是二
進位數字,指出資料庫中發生資料修改的相對順序。實作 timestamp 資料類型原先是
為了支援 SQL Server 復原的演算法。每次有分頁被修改時,就會以目前的 @@DBTS 值
加上戳記,而 @@DBTS 會累加 1。這對復原來說已經足夠判斷分頁修改的相對順序,但
是 timestamp 值與時間沒有關係。 」
所以這個值是相對於整個資料庫的分頁變動「次數」,與時間沒有關係
: slalala兄說的current_timestamp我是用在建立表單的時候
: 因為我有二個欄位記錄時間
: 一個是CREATION_DATE(建立時間),一個是UPDATE_DATE(更新時間)
: 建立時的屬性有用到current_timestamp:
: CREATION_DATE DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP
: 在建立的時候的確能精準的自動放進伺服器的系統時間
: UPDATE_DATE欄位在建立的時候當然跟CREATION_DATE欄位的資料相同
: 但是我的問題是希望在UPDATE的時候
: UPDATE_DATE能自動更新時間...可惜CURRENT_TIMESTAMP好像不行
因為這是放在Default值,所以只有Insert時會自動填入了
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 203.70.75.72