Encart de données en cascade

J'ai ces 3 tables:

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) ) 

Quelques exemples de données pour 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') 

J'insère actuellement des données de tblSample à tblPrimary avec la requête suivante:

 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) 

Maintenant, je veux également insert des données dans tblSecondary , lors de l'insertion de données dans tblPrimary .

  • Le `tblPrimary.PrimaryId` nouvellement généré sera inséré dans la colonne tblSecondary.PrimiaryId`
  • `tblSample.Name` sera inséré dans la colonne` tblSecondary.SampleName`
  • Ce sera un process d'insertion de données en cascade

Que dois-je faire après la requête d'insertion ci-dessus pour que cela soit fait? Je veux que le résultat tblSecondary soit comme suit:

entrez la description de l'image ici

Vous aurez besoin d'une variable de table et d'une clause de sortie pour ce quelque chose comme ….

 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