很简单,我有两个表Source和Target.
declare @Source table (SourceID int identity(1,2), SourceName varchar(50))
declare @Target table (TargetID int identity(2,2), TargetName varchar(50))
insert into @Source values ('Row 1'), ('Row 2')
Run Code Online (Sandbox Code Playgroud)
我想将所有行移动@Source到@Target并知道TargetID每个行,SourceID因为还有表格SourceChild,TargetChild并且需要复制,我需要将新行添加TargetID到TargetChild.TargetIDFK列中.
有几个解决方案.
scope_identity()填充FK TargetChild.@Target并插入SourceID.然后,您可以加入该列以获取TargetIDFK中的内容TargetChild.SET IDENTITY_INSERT OFFfor @Target和处理自己分配新值.您将获得一个然后使用的范围TargetChild.TargetID.我不是那么喜欢他们中的任何人.我到目前为止使用的是游标.
我真正想要做的是使用outputinsert语句的子句.
insert into @Target(TargetName)
output inserted.TargetID, S.SourceID
select SourceName
from @Source as …Run Code Online (Sandbox Code Playgroud) 我有表 A 和表 B 具有多对多关系。表AB是链接表。
Table: Columns:
A { Id, Name }
AB { A_Id, B_Id }
B { Id, Name }
Run Code Online (Sandbox Code Playgroud)
我想将行插入到表 A 中,然后使用该行的 Id(Id 具有自动递增的标识)插入到链接表中。
是否可以在单个 SQL 命令中执行此操作?
示例(伪sql):
insert into A (Name) values (@name)
insert into AB (A_Id, B_Id) values ([previous id], @b_Id)
Run Code Online (Sandbox Code Playgroud)