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
.
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:
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