当前位置: 首页 > 知识库问答 >
问题:

MS SQL标识列在标识列上计数不正确[重复]

郜杰
2023-03-14

我正在使用MS SQL Server。有人能告诉我为什么我的数据库中的身份列在应该自动增加1的时候却疯狂地跳了一个数字吗?首先,我一直在逐行输入数据。最终,在可能100个条目之后,它将不按顺序排列,将101个条目放在31个条目之后,不按顺序排列。现在突然间,它从290年跳到了1400年,当时它应该还在....管理工具仍然显示正确的条目数量,但这是没有意义的,这应该是一个计数。有人能给我解释一下吗?

<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> 

共有1个答案

薛烨
2023-03-14

这些数字保证是单调增加的,但不是相邻的。以下是一些相关的文档。

通常,标识列也被限制为唯一或主键。但是,如果没有这些约束,它们甚至不能保证是唯一的。

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

select row_number() over (order by id) as sequential_with_no_gaps
 类似资料:
  • 如何更改身份栏? 例如,我有一张表: 我需要随着时间的推移而改变

  • 我有一个表,它有一个主键ID列,并设置为每个新条目的增量为1,这是一个相当标准的配置。此表定期更新新记录,每月归档一次到存档表,然后截断。 我的问题不是关于重新播种列(使用DBCC--我知道如何这样做),而是关于如何使用新的ID值重新对现有记录进行编号。我应该使用循环的动态SQL查询(删除记录、插入记录)来执行此操作吗?还是有一些我不知道的SQL Server函数可以自动重新编号ID列?

  • 我在SQL Server中有一个名为的表。t此表有一个名为的列,属性为。 现在我插入了大约175568行作为测试。然后我删除了大约568行,但是当我再次插入数据时,列从175569开始,而不是从175001开始。 请帮我写一下丢失的身份证

  • 我有以下hsqldb数据库: 我需要添加条目,只有当它们在表中不存在时。我希望在一个步骤中完成这项工作(而不是通过选择步骤来确定条目是否在表中,如果不是这样,则通过第二个步骤插入) hsqldb对此具有合并操作。然而,问题是我有一个id-IDENTITY列,hsqldb应该自动负责设置值,我不知道如何告诉合并操作。 这可以工作,但我必须给出id(3),我需要由hsqldb自动设置id(就像上面的插

  • 原始关闭原因未解决 当我读取CSV / Excel文件时,日期时间列具有“对象”类型。如果它是唯一的一个,很容易识别它,但是我得到了几个不包含时间的对象类型列 - 字符串。 我正在寻找一种方法来识别时间列,而不知道它的名称或位置。目前我所能做的就是这样: csv文件示例:

  • 问题是,我可以强制在末尾填充缺少的ID吗?

  • 我在赛贝斯ASE 15.5中使用赛贝斯Central工具创建了几个表。我已经将列定义为主键(int数据类型),不知何故,该列也变成了标识。 现在,从赛贝斯中心,我无法从该列中删除标识,即使该表或任何引用的表中没有数据。 有人能帮忙吗?我不想使用Set IDENTITY_INSERT,我想从本专栏中完全删除标识行为。 谢啦

  • 问题内容: JPA 2.0(Hibernate 4.2.4.Final/Spring 3.2.8.Release)/ Mysql 5.6 对于管理实体E w /自动生成的主键,例如 出于传统原因,foo需要等于:{id}:。例如,如果id为204,则foo将为“:204:”,因此在事务中发生这种情况是可行的 有没有一种更好的方法来计算值取决于生成的ID的派生列?没有上述技巧,即在持久化之后直接更新