问题标签 [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.
asp.net-mvc - 在无状态(Web)DB4O 应用程序中管理唯一 ID
我正在尝试使用 DB4O 构建一个新的 Web 应用程序——从中学到了很多有趣的东西和一些非常有趣的东西。我正在努力解决的一件事是 DB4O 目前缺乏对无状态应用程序(即,主要是 Web 应用程序)的支持以及对自动生成 ID 的需求。
有许多创造性和有趣的方法,我已经能够找到与DB4O 事件挂钩的方法,使用 GUID 而不是数字 ID,或者出于任何原因完全避免使用任何 ID 系统。
虽然每种方法都有其优点,但我想知道不太优雅的方法是否同样是最合适的。考虑以下伪代码:
这似乎是一种非常简单的方法,通常在这里我开始思考,“我错过了一些非常明显的东西”。我有没有?
sql-server - SQL Server 是否保证标识列的顺序插入?
换句话说,是否保证以下“游标”方法有效:
- 从数据库中检索行
- 从返回的记录中保存最大的 ID 以供以后使用,例如
LastMax
- 之后,
"SELECT * FROM MyTable WHERE Id > {0}", LastMax
为了使它起作用,我必须确保我在步骤 1 中没有得到的每一行的 Id 都大于LastMax
. 这是有保证的,还是我会遇到奇怪的比赛条件?
sql - 标识列 SQL Server 2005 两次插入相同的值
我有一个插入到表中的存储过程(其中有一个不是主键的标识列 - 最初使用日期/时间插入 PK 以生成唯一值)。
然后我们使用 SCOPEIDENTITY() 来获取插入的值,然后有一些逻辑可以根据该值生成主键字段值,然后将其更新回表中。
在某些情况下,存储过程被多个进程同时调用,导致“违反 PRIMARY KEY 约束...”错误。
这似乎表明标识列允许为多个记录插入相同的数字。
第一个问题——这怎么可能?
第二个问题 - 如何停止它......目前没有错误处理,所以我将添加一些 try/catch 逻辑 - 但想完全理解问题以正确处理
sql - SQL:没有游标,如何选择记录为 dups 制作唯一的整数 id (identity like)?
如果您有下面的选择语句,其中 PK 是主键:
并且输出是这样的(为了清楚起见,第一个数字是间隔的):
你想输出这样的东西:
是不是可以让PK中的“00”在单选内有“身份”的数字效果?否则,您如何为该日期的每个找到的活动将数字加 1?
我在输入时已经在考虑尝试用 group by 尝试 Sum(case when ?? then 1 end) 之类的东西。
编辑:(下面由 JohnFX 提供的答案)
这是最终的答案:
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?(关键领域)。这与他们在初始化时的处理方式有关吗?
任何帮助表示赞赏!
- 撞 -
sql-server - 拆分表并使用标识链接插入
我有 3 个类似于下面结构的表
EmpFull_Temp 表具有带有虚拟对象 ID 列的记录...我想用该表中的记录填充前 2 个表...但以 EmpID 作为前 2 个表之间的引用。
我在存储过程中试过这个......
但它说.. 无法绑定多部分标识符“EmpFull_Temp.ObjectID”。
你能帮我实现这个目标吗...
编辑:不保证 [Name]+[Address] 在 [EmpBasic] 表中是唯一的
c# - 在 C# 中使用 LINQ to SQL 处理自动递增 IDENTITY SQL Server 字段
我正在构建一个 ASP.NET MVC 站点,该站点使用 LINQ to SQL 连接到 SQL Server,其中我有一个表,其中有一个表示 ID 的 IDENTITY bigint 主键列。
在我的一个代码方法中,我需要创建该表的一个对象以获取其 ID,我将根据另一个表(FK-to-PK 关系)将其放入另一个对象中。
IDENTITY 列值是在什么时候生成的,如何从我的代码中获取它?
是正确的方法:
- 创建具有 IDENTITY 列的对象
- 执行 InsertOnSubmit() 和 SubmitChanges() 将对象提交到数据库表
- 获取对象的ID属性值
sql - 如何在 SQLite 数据库中重新设置自动增量列?
是否可以在 SQLite 数据库中重新设置自动增量列,如果可以,这是如何完成的?
IE。相当于DBCC CHECKIDENT ('MyTable', RESEED, 1)
SQL Server 中的。
entity-framework - SQLite + Entity Framework 4.0 + Identity 列/Autoinc 不起作用
这是我的桌子:
EF 设计器中的我的实体已将 StoredGeneratedPattern 设置为 Identity OR Compute,并且数据类型为 int64。
每次我插入第二个 SchoolYear 对象时,我都会收到此错误:
具有相同键的对象已在 ObjectStateManager 中...