问题标签 [identity-column]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
13 回答
136415 浏览

sql-server - 如何以编程方式确定哪些 SQL 表具有标识列

我想在 SQL Server 2005 中创建一个列列表,这些列在 T-SQL 中具有标识列及其对应的表。

结果将类似于:

表名、列名

0 投票
8 回答
34498 浏览

.net - 即使有事务回滚,SQL 标识(自动编号)也会增加

我有一个带有 SQL 插入到 SQL Server 2005 数据库的 .net 事务。该表具有标识主键。

当事务中发生错误时,Rollback()调用。行插入正确回滚,但是下次我将数据插入表时,标识会增加,就好像回滚从未发生过一样。所以本质上在身份序列中存在差距。有没有办法让该Rollback()方法恢复丢失的身份?

我不是以正确的方式接近这个吗?

0 投票
9 回答
60350 浏览

sql - 一个sql server表可以有两个标识列吗?

我需要一列作为主键,另一列自动增加订单号字段。这可能吗?

编辑:我想我只会使用一个复合数字作为订单号。无论如何谢谢。

0 投票
1 回答
18836 浏览

sql - Linq to SQL - 如何在 InsertOnSubmit() 之后查找 IDENTITY 列的值

我正在使用LINQ to SQL将简单数据插入到没有stored procedure. 该表有一个主键 ID 列,该IDENTITYSQL Server在 my 和DBML.

首先我调用InsertOnSubmit();单行的数据,然后调用SubmitChanges();将行提交到数据库。但我认为必须有一种简单的方法来检索IDENTITY新插入行的行列值。我不希望向IDENTITY数据库提供列值,我希望它为我生成一个。

这个怎么处理最好?

0 投票
4 回答
2905 浏览

asp.net - 实体框架身份列不起作用

我对实体框架相当陌生,并且正在构建我的第一个 MVC 应用程序。我正在为一个简单的实体实现一个创建视图,但是,我遇到了(SQL Express 2005)标识列主键的问题。据我了解,框架应该处理 Identity 列并让 SQL 数据库生成 ID 值。

当我尝试使用创建视图保存而不设置 ID 值时,我收到“需要值”错误。如果我为 ID 指定任何值,它会使用数据库中的 Identity 值保存回数据库 - 即。而不是我指定的值,所以一旦 T-SQL 到达那么远,显然是正确生成的。

Identity 属性在数据库中的 ID 列上设置,StoreGeneratedPattern 在模型中设置为“Identity”(见下文):-

属性名称="ID" Type="int" Nullable="false" StoreGeneratedPattern="Identity"

我错过了什么吗?如何告诉模型此列不需要值?

0 投票
2 回答
1293 浏览

entity-framework - 实体框架在插入数据库时​​是否保留顺序?

我们计划在我们的 sql server 数据库中使用标识列。目前我们正在使用 guids 来生成唯一的 id,但事实证明,排序是相关的,所以我们考虑切换到身份列。

由于排序是相关的,我们希望确保我们将对象添加到实体上下文的顺序也是它们插入数据库的顺序。这是相关的,因为 sql server 将为标识列生成值。

这是由实体框架保证的吗?如果不是,那么为从不同进程更新的数据库生成您自己的唯一整数 ID 的有效解决方案是什么。

0 投票
8 回答
4281 浏览

sql-server - 身份列上的 Sql Server 2005 主键冲突

我遇到了一个奇怪的问题,我需要一些帮助来解决这个问题。

我有一个数据库,除了所有应用程序数据列之外,它还有一个 ID 列(定义为 int not null,Identity,从 1 开始,递增 1)。该表的主键是 ID 列,没有其他组件。

没有一组数据可以用作“自然主键”,因为应用程序必须允许多次提交相同的数据。

我有一个存储过程,这是将新记录添加到表中的唯一方法(除了直接以数据库所有者身份登录服务器)

今天早上 QA 测试应用程序时,他们在数据库中输入了一条新记录(按预期使用应用程序,并且正如他们过去两周一直在做的那样),并在该表上遇到了主键冲突。

这与我 10 年来一直在做主键的方式相同,但从未遇到过这种情况。

有想法该怎么解决这个吗?或者这是那些偶尔出现的宇宙射线故障之一。

感谢您提供的任何建议。

奈杰尔

编辑于美国东部时间 6 月 12 日下午 1:15,以提供更多信息

架构的简化版本...

(还删除了默认值语句)

存储过程如下

它甚至不看身份列,不使用 IDENTITY、@@scope_identity 或类似的东西,它只是一个文件,然后忘记。

我尽可能确信身份值没有被重置,并且没有其他人使用直接数据库访问来输入值。在这个项目中唯一一次使用身份插入是在初始数据库部署中设置查找表中的特定值。

QA 团队在收到错误后立即再次尝试,并且能够成功提交查询,此后他们一直在尝试重现它,但到目前为止还没有成功。

我真的很欣赏这些想法。

0 投票
19 回答
1117606 浏览

sql - 向现有列添加标识

我需要将表的主键更改为标识列,并且表中已经有很多行。

我有一个脚本来清理 ID 以确保它们从 1 开始是连续的,在我的测试数据库上工作正常。

将列更改为具有标识属性的 SQL 命令是什么?

0 投票
8 回答
3194 浏览

database-design - 您何时会选择不使用身份/自动编号字段作为主键?

我不相信银弹,但我真的很喜欢使用序列或自动编号标识列作为数据库表的主键列。它们是独一无二的,它们的索引很好,而且我不必担心空值。

另一方面,在某些情况下,当表中还有其他可以用于相同目的的唯一列时,它们似乎是多余的。例如,假设您正在构建一个表格,将 9 位邮政编码映射到城市区域。邮政编码字段也可以正常工作(前提是您可以保证数据格式并且没有重复值)。

直截了当:我的经验,就像我们任何人一样,是有限的。还有哪些现实世界的例子导致人们选择使用自动编号列作为表的主键,为什么?

这对我来说是一种“拓宽视野”的事情,我希望向那些使用过多数据库并有令人信服的理由选择其他方式的人学习一些东西。

0 投票
2 回答
1812 浏览

sql-server - 身份列不同步

我有一个以标识列作为主键的表。

一切都很好,直到几天前,使用此表的应用程序开始抱怨 PK 违规。起初我认为这是不可能的,直到我记得DBCC CHECKIDENT。魔术函数告诉我“当前列值”高于“当前标识值”。我重新设置为最高值,一切似乎又恢复了。

我的问题是,为了防止将来再次发生这种情况,这种不同步问题的可能原因是什么?以及如何预防?