sql-server - SQL Server 标识规范不是顺序的

标签 sql-server database

我注意到 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/

相关文章:

sql - 将 NULL 添加到 varchar 时使用 ISNULL

SQL Server - 高级分组

sql - 如何在 T-SQL 中反转字符串中的值

MySql 检索产品和价格

python - cursor.execute ("INSERT INTO im_entry.test ("+entrym +") VALUES (' "+p +"' );")

php - wordpress 数据库返回 A

sql - "Invalid Column Name"即使列已创建?

database - 如何通过不确定的日期范围在 SQLite 数据库中搜索纪元时间戳?

PHP复制和删除文件并从数据库中删除记录

sql-server - SQL Server 2008 中的小数舍入