삽입 된 행의 PK Guid를 얻는 가장 좋은 방법
-
03-07-2019 - |
문제
나는 읽었다 이 질문 삽입 된 행의 신원을 얻는 것에 대해. 내 질문은 일종의 관련이 있습니다.
삽입 된 행에 대한 GUID를 얻는 방법이 있습니까? 내가 작업중인 테이블에는 기본 키 (NewID로 기본값)로 가이드가 있으며 행을 삽입 한 후 해당 안내서를 검색하고 싶습니다.
같은 것이 있습니까? @@IDENTITY
, IDENT_CURRENT
또는 SCOPE_IDENTITY
안내?
해결책
출력 기능을 사용하여 기본값을 매개 변수로 되돌릴 수 있습니다.
CREATE TABLE MyTable
(
MyPK UNIQUEIDENTIFIER DEFAULT NEWID(),
MyColumn1 NVARCHAR(100),
MyColumn2 NVARCHAR(100)
)
DECLARE @myNewPKTable TABLE (myNewPK UNIQUEIDENTIFIER)
INSERT INTO
MyTable
(
MyColumn1,
MyColumn2
)
OUTPUT INSERTED.MyPK INTO @myNewPKTable
VALUES
(
'MyValue1',
'MyValue2'
)
SELECT * FROM @myNewPKTable
그래도 고유 식별자를 기본 키로 사용하여주의해야합니다. 새로 생성 된 가이드를 인덱스의 중간에 삽입하고 끝에 추가로 추가되기 때문에 안내서에 인덱싱은 성능이 매우 저하됩니다. SQL2005에는 newseventient ()에 대한 새로운 기능이 있습니다. 안내에 대한 모호함이 필요하지 않으면 가능한 대안입니다.
다른 팁
단일 행을 삽입하는 경우 또 다른 클리너 접근 방식
CREATE TABLE MyTable
(
MyPK UNIQUEIDENTIFIER DEFAULT NEWID(),
MyColumn1 NVARCHAR(100),
MyColumn2 NVARCHAR(100)
)
DECLARE @MyID UNIQUEIDENTIFIER;
SET @MyID = NEWID();
INSERT INTO
MyTable
(
MyPK
MyColumn1,
MyColumn2
)
VALUES
(
@MyID,
'MyValue1',
'MyValue2'
)
SELECT @MyID;
제휴하지 않습니다 StackOverflow