[英]SQL Server IDENTITY(1,1) Column not generated in sync with UpdatedDate
我在基於SQL Server的應用程序中遇到了一個奇怪的情況,並且試圖找出在試圖解釋它時所缺少的內容。
我在表上有一個觸發器,每次在表中更新/刪除一條記錄時,觸發器都會在日志表中插入一條日志。 貝婁是我的日志表的一個示例,其中包含我最近發現的內容。
ID UpdatedDate
------------------------------
10 2018-07-06 12:20:54.287
11 2018-07-06 12:20:54.657
12 2018-07-06 12:20:54.703
13 2018-07-06 12:20:54.910
14 2018-07-06 12:20:54.900
15 2018-07-06 12:20:54.953
16 2018-07-06 12:20:55.070
17 2018-07-06 12:20:55.087
18 2018-07-06 12:20:55.100
19 2018-07-06 12:20:55.113
20 2018-07-06 12:20:55.117
21 2018-07-06 12:20:55.143
22 2018-07-06 12:20:55.243
23 2018-07-06 12:20:53.973
如果你看看在最后記錄#23中, UpdateDate
小於UpdatedDate
的較小ID的其他(舊的)記錄。 這對我來說很奇怪,因為ID列是用IDENTITY(1,1)
定義的,這意味着它是單調遞增的。 因此,ID值越高,記錄越新,因此UpdatedDate
列應始終增加,並且記錄#23不應具有較舊的時間戳。
BTW插入到日志表只是使用GETDATE()
為UpdatedDate
列。
能以某種方式解釋嗎?
我很確定您正在衡量兩種不同的方法。 updatedDate
可能更類似於調用觸發器時,甚至調用update
/ delete
。 id
是將行實際插入表中的時間。
因此,您看到的是較舊的更新/刪除稍后會記錄到日志中。 我推測這是因為該過程需要更長的時間-常見的原因是更多的行受到影響,頁面拆分,索引更新,觸發器。 因為花費的時間更長,所以較早的日期要比其他事務記錄得更晚。
我認為,如果對列使用default getdate()
,則會看到更多的一致性。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.