SET IDENTITY_INSERT xyz ON
의 범위는 무엇입니까?SET IDENTITY_INSERT xyz ON의 범위는 무엇입니까?
특정 테이블에 대해 하나의 저장 프로 시저에서이 코드를 사용하면 다른 사용자가 다른 프로 시저를 실행하여 동시에 해당 특정 테이블에 삽입하면 어떻게됩니까?
또한 서로 다른 사용자/절차가 서로 다른 테이블에 대해 SET IDENTITY_INSERT xyz ON
을 동시에 설정하려고하면 어떻게됩니까?
SET IDENTITY_INSERT xyz ON
의 범위는 무엇입니까?SET IDENTITY_INSERT xyz ON의 범위는 무엇입니까?
특정 테이블에 대해 하나의 저장 프로 시저에서이 코드를 사용하면 다른 사용자가 다른 프로 시저를 실행하여 동시에 해당 특정 테이블에 삽입하면 어떻게됩니까?
또한 서로 다른 사용자/절차가 서로 다른 테이블에 대해 SET IDENTITY_INSERT xyz ON
을 동시에 설정하려고하면 어떻게됩니까?
테이블은 한 번에 하나의 테이블에 대해서만 옵션을 가질 수 있지만 동일한 테이블에 대해 여러 개의 다른 세션이있을 수 있습니다 (확실하지는 않습니다.)
자식 배치가 완료되면 (이 옵션이 설정 됨) 자동으로 연결이 해제되는 것처럼 보입니다.
CREATE TABLE Tst
(C INT IDENTITY(1,1))
EXEC('SET IDENTITY_INSERT Tst ON')
INSERT INTO Tst(C) VALUES (1) /*Fails - Complains IDENTITY_INSERT is off*/
SET IDENTITY_INSERT Tst ON
EXEC('INSERT INTO Tst(C) VALUES (1)') /*Succeeds this way round*/
SET IDENTITY_INSERT Tst OFF
은 세션 = 연결을 수행합니까? – RacerX
@RacerX - 네,하지만 호출 스택을 올라갈 때 재설정되는 것에 대한 제 의견을 참조하십시오. –
내 시험 (SQL 2008 R2) 테이블이 다른 세션에서 IDENTITY_INSERT ON
경우에도 열에 신원 사양은 여전히 하나 개의 세션에서 올바른 값을 손을 보여줍니다.
한 세션 (특정 세션에서)에 특정 ID 열 값을 사용하여 데이터를 대량 삽입 할 수 있어야하며 다른 사용자 (다른 세션에서)는 정상적으로 작동하는 ID 열에 의존해야합니다.
나는 상관없이이 일을하는 것을 매우 조심해야합니다. Set_identity 삽입은 드문 경우에만 수행되어야하며, 일반적으로 시스템을 처음 초기화 할 때만 ID를 보유해야하는 다른 시스템에서 데이터를 가져 오는 경우가 종종 있습니다. 응용 프로그램에서 이것을 사용하는 것은 매우 좋지 않습니다. 두 사용자가 differnt 레코드에 대해 동일한 값을 삽입하려는 경우 어떻게됩니까? 아이덴티티가 자동 생성되고 이러한 방식으로 유지되어야하거나 사용자가 사용하지 않아야하는 이유가 있습니다. – HLGEM
@HLGEM,이 데이터는 삭제 된 데이터가 다시 추가되는 (기록 로그 테이블에서 복사 됨) 복원 기능의 일부입니다. – RacerX