问题标签 [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.
sql - 重新插入具有标识列的行
我正在 SQL Server (2008 R2) 中实现一个队列,其中包含要执行的作业。完成后,作业将移至历史表,设置成功或失败标志。队列表中的项目有一个标识列作为主键。历史队列具有此 id 和时间戳的组合作为 PK。
如果作业失败,我希望选择重新运行它,并且他们认为这是将其从历史记录表移回实时队列。出于可追溯性的目的,我希望重新插入的行具有与原始条目相同的 ID,这会导致问题,因为这是一个标识列。
我看到两种可能的解决方案:
1) 使用 IDENTITY_INSERT:
2) 创建一些自定义逻辑来生成唯一 ID,例如从实时队列和历史队列中获取最大 ID 值并添加一个。
我没有看到 2 有任何真正的问题,除了它很乱,可能性能很差,而且它让我神经质的皮肤爬行......
选项 1 我喜欢,但我不太清楚其中的含义。这将如何表现?而且我知道同时对两张桌子这样做会使事情崩溃和燃烧。如果两个线程同时对同一张表执行此操作会发生什么?
对于半常用的存储过程来说,这是否是一种很好的方法,或者这种技术是否应该只用于在蓝月亮中批量插入数据?
关于哪个是最好的选择,或者有更好的方法有什么想法吗?
sql - 是否有一种聪明的方法可以将数字附加到关系数据库中的 PK 标识列而不会造成总灾难?
这远非理想情况,但我需要通过将数字“1”附加到与其他四个表具有 FK 关系的 PK Identiy 列来修复数据库。我基本上是把一个四位数的数字变成一个五位数的数字。我需要维持关系。我可以将数字存储在 var 中,执行 Set 查询并附加 1,然后为每个表执行此操作...
有没有更好的方法来做到这一点?
c# - 使用 LINQPad 将实体插入带有标识列的 SQL Compact 4 表中
我正在尝试使用 LINQPad 将新记录插入到 SQL CE 4 数据库中,并且遇到表的身份问题。假设我有这个简单的表格,例如:
我可能以错误的方式做事,但我在 LINQPad 中尝试过
但我得到一个 SqlCeException 说明
我可以用 SQL 很好地插入一条记录,它可以在 SQL CE 或其数据提供程序没有错误的情况下工作,并且 SQL CE 为我设置了 Id 列,这就是我想要的
我还缺少另一个步骤吗?我什至不确定它是否是 LINQPad 问题,但我想我还是会问,因为这就是我现在正在尝试使用此代码的原因。
entity-framework - 在实体框架中,插入后获取标识列的值
我正在使用 EF4。我想在数据库中插入一个新的 MyObject。MyObject 有两个字段:
ID:int(身份)和名称:字符串
正如我在文档中看到的那样,Entity Framework 应该在调用 SaveChanges() 后将 MyObject.Id 设置为数据库生成的值,但在我的情况下这不会发生。
更新:
这发生在我的一个实体中,其他实体工作正常。顺便说一句,我检查了 DB 列是身份,StoreGeneratedPattern 设置为身份。这是SSDL。我看不出有什么不同。第一个工作不正常:
更新在数据库中成功完成并生成了身份,但实体对象并未使用新身份进行更新。
sql-server - 触发器是否能够复制作为身份 ID 的主键?
我想INSERT
在表格中立即X
将该记录复制到另一个History
表格中。
现在该表将主键作为Identity
列,因此该记录在实际插入之前不会有主键 id。
我的问题是,如果我trigger
在此记录上进行操作,我会获得该记录的身份 ID 还是仍为空白?
sql - 将 ColdFusion 应用程序生成的标识值插入 iSeries 表的最佳方法是什么?
我正在使用没有自动递增标识列的数据库(iSeries)。因此,我必须在应用程序中即时生成 ID。
我有一个用户定义的函数可以为我完成这项工作,因为我需要为几个表生成这些 ID:
(我知道这不是很安全,但这只是为了让它现在在他的开发环境中工作。)
我的问题是,从 INSERT 语句中调用函数的好处/缺点是什么,而不是在本地保存 ID 值:
在 INSERT 语句中生成 ID
/li>在 INSERT 语句之前生成 ID
/li>
我倾向于第一个选项,因为 ColdFusion 将准备语句并立即执行它,而不是在本地存储值,然后让 ColdFusion 准备 SQL 语句。
有什么区别吗?
c# - SQL Server - 格式化的标识列
我想在格式为 FOO-BAR-[标识号] 的表中有一个主键列,例如:
SQL Server 可以做到这一点吗?还是我必须使用 C# 来管理序列?如果是这种情况,我怎样才能使用 EntityFramwork 获得下一个 [identity number] 部分?
谢谢
编辑:
我需要这样做是因为此列表示发送给客户的通知的唯一标识符。
- FOO 将是一个常量字符串
- BAR 将根据通知的类型(检测、警告或强制执行)而有所不同
那么只有一个 int 标识列并在 C# 的业务逻辑层中附加值会更好吗?
sql-server - 当前插入行的标识
我正在做一个项目,但问题出现了:插入语句可以将它自己的身份插入另一个字段吗?
这个想法是记录的层次结构,并且“父”字段将指向父记录的ID,而给定树的“顶部”记录将仅指向其自身。
我们当然可以将它留给父级,或者稍后返回并插入它的 ID。但我想知道在插入记录时是否有任何 SQL Server 操作将 IDENTITY 插入另一个字段?
编辑:或者有没有办法将一个字段的默认值指定为另一个字段的值?这也将解决这个问题。
编辑:默认字段是另一个字段似乎已经得到回答,答案是否定的,使用触发器。当然,这无助于约束和非空字段的问题。(http://social.msdn.microsoft.com/Forums/en/sqltools/thread/661d3dc8-b053-47b9-be74-302ffa11bf76)
c# - 当我尝试保存新记录或更新现有记录时,EF 返回 0000-0000-0000-xxx 作为 Guid?
我在我的 C# 项目中使用 EF4。我面临的问题是,当我尝试保存记录时,我得到主键违规并且 PK 值为“0000-0000-0000-xxx”。根据我的猜测,EF 无法识别 IsIdentity 标志并生成 guid 值。在我的表的 SQL Server 数据库中,我指定了一个 PK(uniqueidentifier>guid) 并将其设置为 IdentityColumn,因此我希望这会传递到我的项目中,因为 guid 是在 SQL Server 中生成的。有没有办法克服这个错误?
sql - 插入具有自动递增 ID 的表时保持外键关系
我有两个表:缺陷和缺陷数据。每个缺陷可能有也可能没有一个或多个 DefectData。因此,DefectData 有一个 DefectId 列作为外键。
两个表中的 Id 都是一个自动递增的标识。
我遇到的问题是,当我想插入一个新的 Defect 及其 DefectData 时,首先插入 Defect 并获取一个 Id,但我不知道该 Id 将提供给 DefectData 什么。我的解决方案是然后从匹配插入数据的缺陷中进行选择以获取 Id。
- 插入缺陷
- 获取该缺陷的 ID
- 插入 ID 为 2 的缺陷数据(零个或多个)。
设置 IdentityInsert 然后使用我自己的 Id 插入将不起作用,因为这是由网络服务器运行的,并且可能有并发调用(我在这里吗?)。
提前致谢。