반응형
GUID의 SCOPE_IDENTITY()?
누가 나에게 말할 수 있나요?SCOPE_IDENTITY()
SQL Server에서 GUID를 프라이머리 키로 사용할 경우
순차 GUID를 기본 키로 사용하고 있기 때문에 먼저 GUID를 만들고 변수로 저장하는 것은 원하지 않습니다.
마지막으로 삽입된 GUID 기본 키를 가져오는 가장 좋은 방법이 무엇인지 알고 계십니까?
OUTPUT을 사용하면 GUID를 되찾을 수 있습니다.이것은, 복수의 레코드를 삽입하는 경우에도 유효합니다.
CREATE TABLE dbo.GuidPk (
ColGuid uniqueidentifier NOT NULL DEFAULT NewSequentialID(),
Col2 int NOT NULL
)
GO
DECLARE @op TABLE (
ColGuid uniqueidentifier
)
INSERT INTO dbo.GuidPk (
Col2
)
OUTPUT inserted.ColGuid
INTO @op
VALUES (1)
SELECT * FROM @op
SELECT * FROM dbo.GuidPk
레퍼런스: SQL 2005의 OUTPUT 조항 검토
GUID를 프라이머리 키로 사용하는 경우 SCOPE_IDENTITY()에 상당하는 것은 없지만 OUTPUT 구를 사용하여 유사한 결과를 얻을 수 있습니다.출력에 테이블 변수를 사용할 필요는 없습니다.
CREATE TABLE dbo.GuidTest (
GuidColumn uniqueidentifier NOT NULL DEFAULT NewSequentialID(),
IntColumn int NOT NULL
)
GO
INSERT INTO GuidTest(IntColumn)
OUTPUT inserted.GuidColumn
VALUES(1)
위의 예는 에서 값을 읽는 경우에 도움이 됩니다.넷 클라이언트값을 읽다.이그제큐트 스칼라 메서드만 사용합니다.
...
string sql = "INSERT INTO GuidTest(IntColumn) OUTPUT inserted.GuidColumn VALUES(1)";
SqlCommand cmd = new SqlCommand(sql, conn);
Guid guid = (Guid)cmd.ExecuteScalar();
...
NEWID()를 사용하는 경우
declare @id uniqueidentifier
set @id = NEWID()
INSERT INTO [dbo].[tbl1]
([id])
VALUES
(@id)
select @id
그러나 클러스터된 인덱스의 문제는 GUID에 있습니다.이것을 읽어주세요.To NEW SEQUEN셜ID()이것들은 제 아이디어입니다.GUID를 프라이머리 키로 사용하기 전에 생각해 보세요. :)
CREATE TABLE TestTable(KEY uniqueidentifier, ID VARCHAR(100), Name VARCHAR(100), Value tinyint);
Declare @id uniqueidentifier ;
DECLARE @TmpTable TABLE (KEY uniqueidentifier);
INSERT INTO [dbo].[TestTable]
([ID], [Name], Value])
OUTPUT INSERTED.KEY INTO @TmpTable
VALUES(@ID, @Name, @Value);
SELECT @uniqueidentifier = KEY FROM @TmpTable;
DROP TABLE TestTable;
이 스레드를 리소스로 사용하여 트리거 내에서 사용하기 위해 다음을 만들었습니다.
DECLARE @nextId uniqueIdentifier;
DECLARE @tempTable TABLE(theKey uniqueIdentifier NOT NULL DEFAULT NewSequentialID(), b int);
INSERT INTO @tempTable (b) Values(@b);
SELECT @nextId = theKey from @tempTable;
다른 사람도 같은 일을 할 수 있을 거야퍼포먼스를 좋게 말할 수 있는 사람이 있는지 어떤지 궁금하네요.
언급URL : https://stackoverflow.com/questions/1509947/scope-identity-for-guids
반응형
'programing' 카테고리의 다른 글
TabControl을 ViewModel 모음에 바인딩하려면 어떻게 해야 합니까? (0) | 2023.04.09 |
---|---|
64비트 Windows에서의 cURL 실행 (0) | 2023.04.09 |
VBA에서 열의 모든 고유한 값을 빠르게 가져올 수 있는 방법? (0) | 2023.04.09 |
URL에서 문자열을 인코딩하려면 (0) | 2023.04.09 |
작업 스케줄러 태스크가 오류 2147942667로 실패하는 이유는 무엇입니까? (0) | 2023.04.09 |