问题标签 [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 投票
6 回答
17045 浏览

sql - SQL 在已填充的表中重置身份 ID

大家好。我的数据库中有一张表,里面有大约一千条记录。我想重置标识列,以便所有 ID 再次按顺序排列。我在看这个,但我假设它只适用于空桌子

当前表

所需表

提前致谢

0 投票
2 回答
351 浏览

asp.net-mvc - 在无状态(Web)DB4O 应用程序中管理唯一 ID

我正在尝试使用 DB4O 构建一个新的 Web 应用程序——从中学到了很多有趣的东西和一些非常有趣的东西。我正在努力解决的一件事是 DB4O 目前缺乏对无状态应用程序(即,主要是 Web 应用程序)的支持以及对自动生成 ID 的需求。

有许多创造性和有趣的方法,我已经能够找到与DB4O 事件挂钩的方法使用 GUID 而不是数字 ID,或者出于任何原因完全避免使用任何 ID 系统。

虽然每种方法都有其优点,但我想知道不太优雅的方法是否同样是最合适的。考虑以下伪代码:

这似乎是一种非常简单的方法,通常在这里我开始思考,“我错过了一些非常明显的东西”。我有没有?

0 投票
5 回答
6173 浏览

sql-server - SQL Server 是否保证标识列的顺序插入?

换句话说,是否保证以下“游标”方法有效:

  1. 从数据库中检索行
  2. 从返回的记录中保存最大的 ID 以供以后使用,例如LastMax
  3. 之后,"SELECT * FROM MyTable WHERE Id > {0}", LastMax

为了使它起作用,我必须确保我在步骤 1 中没有得到的每一行的 Id 都大于LastMax. 这是有保证的,还是我会遇到奇怪的比赛条件?

0 投票
3 回答
1526 浏览

sql - 标识列 SQL Server 2005 两次插入相同的值

我有一个插入到表中的存储过程(其中有一个不是主键的标识列 - 最初使用日期/时间插入 PK 以生成唯一值)。

然后我们使用 SCOPEIDENTITY() 来获取插入的值,然后有一些逻辑可以根据该值生成主键字段值,然后将其更新回表中。

在某些情况下,存储过程被多个进程同时调用,导致“违反 PRIMARY KEY 约束...”错误。

这似乎表明标识列允许为多个记录插入相同的数字。

第一个问题——这怎么可能?

第二个问题 - 如何停止它......目前没有错误处理,所以我将添加一些 try/catch 逻辑 - 但想完全理解问题以正确处理

0 投票
2 回答
181 浏览

sql - SQL:没有游标,如何选择记录为 dups 制作唯一的整数 id (identity like)?

如果您有下面的选择语句,其中 PK 是主键:

并且输出是这样的(为了清楚起见,第一个数字是间隔的):

你想输出这样的东西:

是不是可以让PK中的“00”在单选内有“身份”的数字效果?否则,您如何为该日期的每个找到的活动将数字加 1?

我在输入时已经在考虑尝试用 group by 尝试 Sum(case when ?? then 1 end) 之类的东西。

编辑:(下面由 JohnFX 提供的答案)

这是最终的答案:

0 投票
3 回答
643 浏览

subsonic3 - 使用 SubSonic ActiveRecord 插入新行后未从 Identity 列中获取键值

我确定我在这里错过了明显的答案,但可以用手。我是 SubSonic 的新手并使用版本 3。我已经到了能够查询和插入的地步,但我坚持在插入后如何获取标识列的值。我看到另一篇提到 Linq 模板的帖子。我没有使用那些(至少我不认为我是......?)

TIA

... 更新 ...

所以我一直在调试我的代码,观察 SubSonic 代码是如何工作的,我发现了 indentity 列被忽略的地方。我使用 int 作为数据库中我的 ID 列的数据类型,并将它们设置为标识。由于 int 在 c# 中是不可为空的数据类型,因此通过执行 (key==null) 检查键列中是否存在值的 Add 方法 (public void Add(IDataProvider provider)) 中的逻辑测试可能是问题。获取标识字段新值的代码位于“真实路径”中,因为 int 不能为空,并且我使用 int 作为标识列数据类型,此测试永远不会通过。我的对象的 ID 字段中有一个我没有放在那里的 0。我假设它是在对象初始化期间设置的。我在这儿不准吗?是改变我在数据库中的数据类型的答案吗?

另一个问题(更多是好奇)。我注意到生成的类中的一些属性是用 ? 在数据类型之后。我不熟悉这个声明结构......给出了什么?有一些声明为 int(非关键字段),还有一些声明为 int?(关键领域)。这与他们在初始化时的处理方式有关吗?

任何帮助表示赞赏!

- 撞 -

0 投票
4 回答
352 浏览

sql-server - 拆分表并使用标识链接插入

我有 3 个类似于下面结构的表

EmpFull_Temp 表具有带有虚拟对象 ID 列的记录...我想用该表中的记录填充前 2 个表...但以 EmpID 作为前 2 个表之间的引用。

我在存储过程中试过这个......

但它说.. 无法绑定多部分标识符“EmpFull_Temp.ObjectID”。

你能帮我实现这个目标吗...

编辑:不保证 [Name]+[Address] 在 [EmpBasic] 表中是唯一的

0 投票
1 回答
1317 浏览

c# - 在 C# 中使用 LINQ to SQL 处理自动递增 IDENTITY SQL Server 字段

我正在构建一个 ASP.NET MVC 站点,该站点使用 LINQ to SQL 连接到 SQL Server,其中我有一个表,其中有一个表示 ID 的 IDENTITY bigint 主键列。

在我的一个代码方法中,我需要创建该表的一个对象以获取其 ID,我将根据另一个表(FK-to-PK 关系)将其放入另一个对象中。

IDENTITY 列值是在什么时候生成的,如何从我的代码中获取它?

是正确的方法:

  1. 创建具有 IDENTITY 列的对象
  2. 执行 InsertOnSubmit() 和 SubmitChanges() 将对象提交到数据库表
  3. 获取对象的ID属性值
0 投票
3 回答
7527 浏览

sql - 如何在 SQLite 数据库中重新设置自动增量列?

是否可以在 SQLite 数据库中重新设置自动增量列,如果可以,这是如何完成的?

IE。相当于DBCC CHECKIDENT ('MyTable', RESEED, 1)SQL Server 中的。

0 投票
1 回答
1417 浏览

entity-framework - SQLite + Entity Framework 4.0 + Identity 列/Autoinc 不起作用

这是我的桌子:

EF 设计器中的我的实体已将 StoredGeneratedPattern 设置为 Identity OR Compute,并且数据类型为 int64。

每次我插入第二个 SchoolYear 对象时,我都会收到此错误:

具有相同键的对象已在 ObjectStateManager 中...