I need to be able to determine the order which rows have been inserted into a table (there are no updates). Can I use an identity column to do this? I know that there may be gaps, but are the values guaranteed to be increasing by insertion order?
可以将文章内容翻译成中文,广告屏蔽插件可能会导致该功能失效(如失效,请关闭广告屏蔽插件后再试):
问题:
回答1:
Largely yes, as long as you don't ever reset it or insert rows with bulk copy, or use IDENTITY_INSERT
. And of course assuming that you don't overflow the data-type (which could be impressive).
回答2:
Yes. Any gaps caused by deletions will not be reused
回答3:
As discussed by Marc, yes you can with provisos
What you should do however to definitively fix the problem is add a column
dteInserted datetime not null default getdate()
Then you just select ordered by this.
Myself I automatically add such a column onto any 'data' table in any database I'm designing. Storage is cheap nowadays and timestamping the insertion date on a row is always useful at some point.