sql-server - 在同一记录中重新插入主键
问题描述
我需要将记录插入生产表。问题是其中一个字段需要与主键具有相同的值。
在下面的示例中,插入查询将“99”放入 [AlsoMyID]。但这只是一个占位符。它必须是进入 [MyID] 的任何值。
如何编写插入查询,以便系统将相同的 PK 值添加到[ MyID] 和 [AlsoMyID]?
Drop table #mylittletable
Create table #Mylittletable (
[MyID] int IDENTITY(1,1) NOT FOR REPLICATION NOT NULL,
[AlsoMyID] int,
[ActualData] varchar(1))
Select * from #Mylittletable
Insert into #Mylittletable values (99,'x')
Select * from #Mylittletable
如果您对背景感兴趣,开发人员正在使用 AlsoMyID 作为链接字段,因此可以使用原始主键值将任意数量的记录链接在一起。也就是说,我无法控制表结构。
解决方案
首先,您不能指定标识列的值,除非您使用 set identity_insert on。所以根据您的要求,您需要在 AlsoMyID 中插入与 MyID 相同的值。
您可以将其计算为流动:
insert into Mylittletable
select @@IDENTITY+1,'1'
推荐阅读
- matplotlib - 如何在朱莉娅冲浪情节中查看?
- java - Spring Boot 和 Swagger 文本/html 响应映射
- c# - 通用列表中的 C# Cast 对象
- c# - ModifierKeys 不存在,尽管使用了 System.Windows.Input
- jenkins - Jenkins 中的大型 terraform 管道
- active-directory - 尝试使用 AD 加入 Linux 服务器时出错
- css - 砌体式放置
- azure - Azure Log Analytics 使用 Azure 函数设置数据
- python - 如何在熊猫中将 N/A (NaT) 转换为 0
- visual-studio-code - VS 代码扩展片段缓存