一個表中只能有一個字段為timestamp類型,把字段設置為timestamp后,在表中進行新增和修改,數據庫會給timestamp自動賦值。
time為timestamp類型,當修改這行數據時,他會改變。
使用:
當A和B同時打開編輯一行數據時,A編輯完后先保存,B后編輯完保存。B的數據就會覆蓋A的數據。B在不知情的情況下覆蓋了A輸入的有用數據。
在表中添加timestamp列后,A和B同時打開的數據具有相同的時間戳,當A保存數據后,改變了改行數據的時間戳,B再保存,會發現現在數據庫的時間
戳和一開始打開的時候的時間戳不一樣呀,因此就知道了該行數據被改變了,可以提示用戶“編輯的數據不存在,保存失敗”。
代碼步驟:
1.點擊編輯按鈕,通過id獲取數據庫中該行數據(包含timestamp類型的字段),將獲取的數據顯示在界面上,timestamp可以隱藏顯示。
2.點擊編輯界面的保存按鈕,把界面上的數據(包括一開始 點擊編輯按鈕獲得的時間戳)傳給update存儲過程,在存儲過程中檢查該id的這行數據的時間戳是否等於傳過來的時間戳。
sql server里的timestamp類型在c#中會變成byte[]類型,byte[]不好轉成string顯示在頁面上,也不能作為存儲過程timeStamp類型的傳參(因為我需要把一開始的時間戳傳給存儲過程來和數據庫現在的時間戳比較)
可以在數據庫中timestamp改成BIGINT類型。
BigINT在c#中會變成long. long轉成string可以直接toString() string轉成long可以long.parse(string)
改成bigint后存儲過程的傳參也要寫bigint.