sql - MS SQL 标识列在标识列上未正确计数

标签 sql sql-server coldfusion

我正在使用 MS SQL Server。有人能告诉我为什么我的数据库中的身份列在应该自动加 1 的情况下却出现了数字的疯狂跳跃吗?首先,我一直在逐行输入数据。最终,在可能有 100 个条目之后,它会将它们按不按顺序排列,将 101 粘在 31 个不按顺序的条目之后。现在,它突然从 290 跳到了 1400,而它应该仍然正常......管理工具仍然显示正确的条目数,但它应该如何以 1 计数,这是没有意义的。有人可以向我解释一下吗?

enter image description here

<cfif structKeyExists(form, "user_pass")> 
   <!--- form has been submitted ---> 

   <cffile 
     action       = "upload" 
     fileField    = "filefieldname" 
     destination  = "#expandPath("/webapps/dash/images/")#" 
     nameConflict = "MakeUnique" 
     result       = "myfile" 
   /> 

   <cfset imagePath = myfile.serverDirectory & "/" & myfile.serverFile>
   <cfif isImageFile(imagePath)> 
     <cfquery datasource="test" name="UserRegistration"> 
        INSERT INTO dbo.Users (employee_number, user_name, user_pass, firstname, lastname, position, email, phone_extension, branch, department, status, picture, admin)
 VALUES ( 
    <cfqueryparam value='#form.employee_number#' cfsqltype='cf_sql_varchar' />
   , <cfqueryparam value='#form.user_name#' cfsqltype='cf_sql_varchar' />
   , <cfqueryparam value='#form.user_pass#' cfsqltype='cf_sql_varchar' />
   , <cfqueryparam value='#form.firstname#' cfsqltype='cf_sql_varchar' />
   , <cfqueryparam value='#form.lastname#' cfsqltype='cf_sql_varchar' />
   , <cfqueryparam value='#form.position#' cfsqltype='cf_sql_varchar' />
   , <cfqueryparam value='#form.email#' cfsqltype='cf_sql_varchar' />
   , <cfqueryparam value='#form.phone_extension#' cfsqltype='cf_sql_varchar' />
   , <cfqueryparam value='Desoto' cfsqltype='cf_sql_varchar' />
   , <cfqueryparam value='#form.department#' cfsqltype='cf_sql_varchar' /> 
   , <cfqueryparam value='Active' cfsqltype='cf_sql_varchar' />
   , <cfqueryparam value='#myfile.serverFile#' cfsqltype='cf_sql_varchar' /> 
   , <cfqueryparam value='No' cfsqltype='cf_sql_varchar' />
     )
    </cfquery> 

    <script> 
        self.location="../login.cfm"; 
    </script>
   <cfelse> 
        <script> 
        <!--- not an image file so return some kind of validation message... --->   
            alert("Not an image file"); 
            self.location="../register.cfm"; 
        </script>
   </cfif> 
 </cfif> 

最佳答案

数字保证单调递增,但不相邻。 Here是一些相关文档。

一般来说,标识列也被限制为唯一键或主键。然而,如果没有这些限制,它们甚至不能保证是唯一的。

它们确实增加了。这种奇怪的行为是为了提高效率,特别是在并行系统中。

如果需要的话,在查询时获取没有间隙的连续值是很容易的:

select row_number() over (order by id) as sequential_with_no_gaps

关于sql - MS SQL 标识列在标识列上未正确计数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34822316/

相关文章:

coldfusion - 在 cfc 中扩展邮件对象

regex - 如何仅在 ColdFusion CFForm 中验证字符?

coldfusion - CFWheels ORM 和 SQL 注入(inject)

sql - 如何使用 SQL Server 中的 View 检查可用库存并将其分配给订单

java - Android sqlite数据库报错SQLiteException no such column

sql - 在 Spark Dataframe 上获取最后的不同数据?

sql-server - 当 SQL 表不是一对一时,如何计算准时交货

sql - 源代码控制和存储过程

sql-server - 字符串中第一个字符的 T-SQL 索引

MySQL:如何通过连接表计算文章数量