在SQL Server中复制具有微小更改的数据

qgzx9mmu  于 2023-01-01  发布在  SQL Server
关注(0)|答案(1)|浏览(113)

我遇到了一个独特的问题。在将控件组从1更改为2时,我必须将数据复制到两个表中。对于Controls中的每个记录,Controls_Data中都有一个记录提供其他信息。以下是一个示例:

CREATE TABLE Controls (
PK_Controls INT IDENTITY,
PK_ControlGroup INT,
Description VARCHAR(50))

CREATE TABLE Controls_Data(
PK_Controls_Data INT IDENTITY,
PK_Controls INT,
PK_ControlGroup INT,
Data VARCHAR(50))

第一个表我没有问题。复制数据可以简单地通过说:

INSERT INTO Controls(PK_ControlGroup, Description)
Select 2, Description From Controls Where PK_Controls = 1

但是,从第二个表复制数据成了一个问题。我现在必须从Controls_Data复制数据,同时用我在上一个语句中创建的新行的主键填充PK_Controls列。我找不到这样做的方法,因为要复制的数据使用组1中控件的旧主键。如果有任何解决方案,我将不胜感激。

xzv2uavs

xzv2uavs1#

CREATE TABLE Controls (
PK_Controls INT IDENTITY,
PK_ControlGroup INT,
Description VARCHAR(50))

CREATE TABLE Controls_Data(
PK_Controls_Data INT IDENTITY,
PK_Controls INT,
PK_ControlGroup INT,
Data VARCHAR(50))

insert into Controls values(1, 'desc 1');
insert into Controls values(1, 'desc 2');

insert into Controls_Data (PK_Controls, PK_controlGroup )
select PK_Controls, PK_controlGroup 
from 
    Controls where PK_ControlGroup = 1
--then insert 1 controls as 2 control group also into Controls_Data
insert into Controls (PK_controlGroup, [Description])
output
    INSERTED.PK_Controls,
    INSERTED.PK_ControlGroup
into Controls_Data(PK_Controls, PK_ControlGroup)
select 2 , [Description]
from 
    Controls where PK_ControlGroup = 1;

相关问题