당신은 대량으로 생성 된 ID를 캡처 INSERT 문의 Output Clause를 사용할 수 있습니다. 예를 들어
:
Create Table dbo.Source (
FirstName nvarchar(100),
LastName nvarchar(100)
);
Create Table dbo.Attrs (
Id int Identity Not Null Primary Key,
Name nvarchar(100) Not Null,
DefaultVal nvarchar(100)
);
Create Table dbo.Table1 (
Id Int Identity Not Null Primary Key,
FirstName nvarchar(100),
LastName nvarchar(100)
);
Create Table dbo.Table2 (
Id int Identity Not Null Primary Key,
Table1ID int Not Null Foreign Key References dbo.Table1 (Id),
AttrId int Not Null Foreign Key References dbo.Attrs (Id)
);
Insert Into dbo.Source Values
(N'Mickey', N'Mouse'),
(N'Donald', N'Duck'),
(N'Goofy', Null);
Insert Into dbo.Attrs Values
('Size', 'Small'),
('Wings', 'No');
Declare @Temp1 Table (Id Int, FirstName nvarchar(100), LastName nvarchar(100))
Declare @Temp2 Table (Id int, Table1ID int, AttrId int)
Insert Into dbo.Table1
(FirstName, LastName)
Output
inserted.Id, inserted.FirstName, inserted.LastName
Into
@Temp1
Select
FirstName, LastName
From
dbo.Source
Insert Into dbo.Table2
(Table1ID, AttrId)
Output
inserted.Id, Inserted.Table1ID, Inserted.AttrID
Into
@Temp2
Select
t.Id,
a.Id
From
@Temp1 t
Cross Join
dbo.Attrs a
Select * From @Temp2
http://sqlfiddle.com/#!3/31110/3
당신은 출력 절을 사용할 수 있습니다 (http://msdn.microsoft.com/en-gb/library/ms177564(v=sql.100). aspx)를 사용하여 삽입을 정렬 할 수 있다면 대량으로 ID를 캡처 할 수 있습니다. – Laurence
나는 output 절을 잘 알고있다. 패션과 같은 것을 의미하는 것이 무엇인지 보여주는 예가 있습니까? – 4thSpace
http://sqlfiddle.com/#!3/89ab3/1 – Laurence