2019. 4. 30. 09:37

INSERTED PK 얻는 방법(SCOPE_IDENTITY, OUTPUT, MERGE INTO)

1. SCOPE_IDENTITY() 사용

INSERT INTO [TABLE] ([COLUMN]) VALUE ('value')
SELECT SCOPE_IDENTITY() AS pk


2. OUTPUT 사용

INSERT INTO [TABLE] ([COLUMN])
OUTPUT INSERTED.[PK_COLUMN]
SELECT 'value' FROM [TABLE2] -- 그냥 insert 도 되고 insert select 도 사용 가능


3. INSERT 된 PK와 기존PK 얻는 방법(MERGE INTO 사용)

MERGE INTO [TARGET_TABLE] TT
USING (
SELECT [PK_NAME], [COLUMN] FROM [SOURCE_TABLE] WHERE [COLUMN] = ?
) ST ON TT.[PK_COLUMN] = ST.[PK_COLUMN]
WHEN NOT MATCHED THEN
INSERT ([TT_COLUMN]) VALUES (ST.[COLUMN])
OUTPUT INSERTED.[TT_PK_NAME] AS NewPK, ST.[PK_NAME] AS OldPK;