/*CREATE TABLE IDTable1 ( Id int identity(1,1), username varchar(10))GOCREATE TABLE IDLogTable ( IDLogTable_Id int identity(1,1), IDTable1_Id int)*/insert into IDTable1output inserted.id into IDLogTable(IDTable1_Id)values ('eralper')
USE [tempdb]GOCREATE TABLE [Master](id INT IDENTITY PRIMARY KEY CLUSTERED,col CHAR(1))CREATE TABLE [Detail](Id INT IDENTITY, MID INT REFERENCES [Master](Id), Col_Descr VARCHAR(50));CREATE TABLE [SomeOtherTable](Col CHAR(1), Descr VARCHAR(50))INSERT INTO dbo.[SomeOtherTable] VALUES ('a','This is a better description')GOIF OBJECT_ID('tempdb.dbo.#M') IS NOT NULLBEGIN DROP TABLE #M;END;CREATE TABLE #M(ID INT PRIMARY KEY CLUSTERED,Col CHAR(1));INSERT INTO dbo.[Master] OUTPUT INSERTED.Id, INSERTED.Col INTO #MSELECT 'a'INSERT INTO dbo.Detail (MID,Col_Descr)SELECT M.ID, sot.DescrFROM #M mINNER JOIN dbo.[SomeOtherTable] sot ON m.[Col] = sot.ColSELECT * FROM dbo.[Master]SELECT * FROM dbo.[Detail]/*id col----------- ----1 aId MID Col_Descr----------- ----------- --------------------------------------------------1 1 This is a better description*/GO--cleanupDROP TABLE dbo.Detail DROP TABLE dbo.[Master]DROP TABLE dbo.[SomeOtherTable]
USE tempdb;GOCREATE TABLE dbo.MasterRecord ( master_id INTEGER IDENTITY PRIMARY KEY, col CHAR(1) NOT NULL, );CREATE TABLE dbo.DetailRecord ( detail_id INTEGER IDENTITY NOT NULL, master_id INTEGER NOT NULL, col_desc VARCHAR(50) NOT NULL, ); CREATE TABLE dbo.SomeOtherTable ( col CHAR(1) NOT NULL, data VARCHAR(50) NOT NULL, ); INSERT dbo.SomeOtherTable (col, data) VALUES ('a','This is a better description');
INSERT dbo.DetailRecord (master_id, col_desc)SELECT INS.master_id, INS.dataFROM ( MERGE dbo.MasterRecord MR USING ( SELECT SOT.col, SOT.data FROM (VALUES ('a')) New (data) JOIN dbo.SomeOtherTable SOT ON SOT.col = New.data ) MS ON (MS.col = MR.col) WHEN NOT MATCHED BY TARGET THEN INSERT (col) VALUES (MS.col) OUTPUT INSERTED.master_id, INSERTED.col, MS.data ) INS;
SELECT * FROM dbo.MasterRecordSELECT * FROM dbo.DetailRecord-- CleanupDROP TABLE dbo.DetailRecord;DROP TABLE dbo.MasterRecord;DROP TABLE dbo.SomeOtherTable;