【问题标题】:Cascading data insert级联数据插入
【发布时间】:2015-08-25 07:41:19
【问题描述】:

我有这 3 张桌子:

CREATE TABLE tblPrimary(
Id INT IDENTITY(1,1)  NOT NULL,
SampleID VARCHAR(8)
PRIMARY KEY (Id)
)

CREATE TABLE tblSecondary(
PrimaryId INT NOT NULL,
SampleName VARCHAR(50) NULL
)

CREATE TABLE tblSample(
SampleId VARCHAR(8)  NOT NULL,
Name VARCHAR(50) NULL
PRIMARY KEY (SampleId)
)

tblSample 的一些样本数据

INSERT INTO tblSample VALUES ('A-1101', 'The CP 1014')
INSERT INTO tblSample VALUES ('A-1102', 'The NT 1014')
INSERT INTO tblSample VALUES ('A-1103', 'The LO 1014')
INSERT INTO tblSample VALUES ('A-1104', 'The AE 1014')
INSERT INTO tblSample VALUES ('A-1105', 'The PW 1014')
INSERT INTO tblSample VALUES ('A-1106', 'The QW 1014')

我目前正在使用以下查询将数据从 tblSample 插入到 tblPrimary:

INSERT INTO tblPrimary
SELECT s.SampleID FROM tblSample s
LEFT JOIN tblPrimary p on s.SampleId = p.SampleID
WHERE s.SampleId NOT IN (SELECT SampleID FROM tblPrimary)

现在我还想将数据插入tblSecondary,在数据插入tblPrimary期间。

  • 新生成的 `tblPrimary.PrimaryId` 将被插入到 tblSecondary.PrimiaryId` 列中
  • `tblSample.Name` 将被插入到 `tblSecondary.SampleName` 列中
  • 这将是一个级联数据插入过程

在完成上述插入查询之后我需要做什么才能完成? 我希望tblSecondary 结果如下:

【问题讨论】:

    标签: sql-server sql-server-2012 sql-insert


    【解决方案1】:

    你需要一个表变量和输出子句,比如......

    DECLARE @NewIds (ID INT, SampleID varchar(8));
    
    
    insert into tblPrimary(SampleID)
    OUTPUT inserted.ID, inserted.SampleID INTO  @NewIds (ID,SampleID )
    select s.SampleID 
    from tblSample s
    left join tblPrimary p on s.SampleId = p.SampleID
    where s.SampleId not in (select SampleID from tblPrimary)
    
    
    -- Now insert rows into tblSecondary table 
    
    INSERT INTO tblSecondary(PrimaryId, SampleName )
    SELECT n.ID  , S.Name
    FROM tblSample s
    INNER JOIN @NewIds n  ON s.SampleId = n.SampleID
    

    【讨论】:

    • 为您更正 'DECLARE @NewIds table (ID INT, SampleID varchar(50));'
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-08-09
    • 1970-01-01
    • 2012-09-03
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多