我注意到 SQL Sever (2008 Express) 在插入自动递增身份规范时会随机向前跳转。
例如,我的一列“HitStat_ID”将按顺序插入 15、16、17、18,然后突然间,它将决定跳转到,比如 1012、1013、1014……然后是 9120、9121等
这并不重要,只要它们是唯一的(它们是唯一的),但为什么要这样做呢?它也在不止一张 table 上这样做。 奇怪的是,这只是在上周左右完成的,但该应用程序已经开发了几个月!
我在 ASP.NET VB 中工作。
这是插入(在本例中):
sql = "INSERT INTO [HitStats] ([PageName], [Date_and_Time], [User_ID]) values ('Home',
'" + TheDateTime + "', '" + Session("User_ID") + "')"
Dim dbcmd As SqlCommand = New SqlCommand(sql, dbconn)
dbcmd.ExecuteNonQuery()
dbcmd.Dispose()
请不要继续谈论 SQL 注入(inject) - 它不会发生!
最佳答案
如果您正在使用应用程序和交易,当您回滚交易时,您将丢失生成的自动递增数字。 此外,如果您进行一些插入并回滚它们。
查看更多here
此外,如果您删除数据,您将不会再次获得生成的数字,除非您重新播种。 参见 here
关于sql-server - SQL Server 标识规范不是顺序的,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12074540/