91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

SQL Server中怎么實現時間戳功能

發布時間:2021-08-03 17:47:07 來源:億速云 閱讀:285 作者:Leah 欄目:數據庫

SQL Server中怎么實現時間戳功能,很多新手對此不是很清楚,為了幫助大家解決這個難題,下面小編將為大家詳細講解,有這方面需求的人可以來學習下,希望你能有所收獲。

1.基本概念

時間戳:數據庫中自動生成的唯一二進制數字,與時間和日期無關的, 通常用作給表行加版本戳的機制。存儲大小為 8個字節。

每個數據庫都有一個計數器,當對數據庫中包含 timestamp 列的表執行插入或更新操作時,該計數器值就會增加。該計數器是數據庫時間戳。這 可以跟蹤數據庫內的相對時間,而不是時鐘相關聯的實際時間。一個表只能有一個 timestamp 列。每次修改或插入包含 timestamp 列的行 時,就會在 timestamp 列中插入增量數據庫時間戳值。這一屬性使 timestamp 列不適合作為鍵使用,尤其是不能作為主鍵使用。對行的任 何更新都會更改 timestamp 值,從而更改鍵值。如果該列屬于主鍵,那么舊的鍵值將無效,進而引用該舊值的外鍵也將不再有效。如果該表在動態游標 中引用,則所有更新均會更改游標中行的位置。如果該列屬于索引鍵,則對數據行的所有更新還將導致索引更新。

使用某一行中的 timestamp 列可以很容易地確定該行中的任何值自上次讀取以后是否發生了更改。如果對行進行了更改,就會更新該時間戳值。如果沒有對行進行更改,則該時間戳值將與以前讀取該行時的時間戳值一致。若要返回數據庫的當前時間戳值,請使用 @@DBTS。

2.時間戳的作用

在控制并發時起到作用:

用戶A/B同時打開某條記錄開始編輯,保存是可以判斷時間戳,因為記錄每次被更新時,系統都會自動維護時間戳,所以如果保存時發現取出來的時間戳與數據庫中的時間戳不相等,說明在這個過程中記錄被更新過,這樣的話可以防止別人的更新被覆蓋。

3.時間戳的應用

簡單說一下,timestamp 主要是記錄該行的最后修改時間戳,注意,這個時間戳是不可以轉換為時間的,只能標注該行修改了。

有 什么用呢?通常是用在數據增量更新方面,比如說,我從該表復制數據到另外一個表,但是如果我想只復制更新過的,那么從最后一次更新的時候,記錄最大的 timestamp的值,然后在當前更新的時候,只要where條件找出大于最后一次更新的 timestamp 值的所有行。然后抽取到更新過的數據,進行復制到另外一個服務器,這就是增量更新用到的。

4.在SQL中的應用例子

(微軟的建議 -- timestamp 語法已被取代,在 DDL 語句,請盡量使用 rowversion 而不是 timestamp。未來的 Microsoft SQL Server 版本將移除這項功能。

參見http://msdn.microsoft.com/zh-cn/library/ms182776.aspx)

rowversion 就是timestamp

丟失更新的解決方法如下:

丟失更新概念:當用戶同時修改一行數據,他們先讀取數據,放在前端進行修改,當修改后,再提交數據,這樣最后提交的數據會覆蓋先前提交的數據,這樣就造成了丟失更新。

長話短說,介紹防止丟失更新的方法: 使用rowversion 時間戳。每次更新的時候,mssql都會自動的更新rowversion的值,若一行在讀前與更新前的值前后不一致,就說明有其他的事務更新了此列,這樣就可以不更新此列,從而防止了丟失更新的情況。

例子 :

先創建一個表:

declare table tmp(a varchar(10),b rowsversion)insert into tmp(a) values( 'abc')

事務A:(新建查詢 執行下列代碼)

declare @rv rowversionselect @rv=b from tmp where a='abc'waitfor delay '00:00:05' --休息5秒update tmp set a='xyz' where b=@rvgo

事務B: (再新建查詢 執行下列代碼)

declare @rv rowversionselect @rv=b from tmp where a='abc'update tmp set a='aaa' where b=@rvgo

看完上述內容是否對您有幫助呢?如果還想對相關知識有進一步的了解或閱讀更多相關文章,請關注億速云行業資訊頻道,感謝您對億速云的支持。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

澄城县| 闵行区| 林口县| 公安县| 达孜县| 新蔡县| 六安市| 深州市| 合川市| 新巴尔虎右旗| 曲麻莱县| 万宁市| 闽侯县| 岫岩| 崇仁县| 静乐县| 安陆市| 苗栗市| 辽阳市| 通河县| 大冶市| 秭归县| 临高县| 当雄县| 哈巴河县| 石泉县| 靖远县| 吴旗县| 崇左市| 武平县| 乌鲁木齐市| 襄汾县| 拉孜县| 自贡市| 商河县| 农安县| 临高县| 遂昌县| 东丽区| 宁阳县| 嵩明县|