IDENTITY_INSERT
OFF로 설정 하면 삽입 작업 중에 오류가 발생하는 이유는 무엇 입니까?
SQL Server 2008에서 올바르게 설정하려면 어떻게합니까? SQL Server Management Studio를 사용합니까?
이 쿼리를 실행했습니다.
SET IDENTITY_INSERT Database. dbo. Baskets ON
그런 다음 콘솔에 명령이 성공적으로 완료되었다는 메시지가 나타납니다. 그러나 응용 프로그램을 실행할 때 여전히 아래에 표시된 오류가 발생합니다.
Cannot insert explicit value for identity column in table 'Baskets' when
IDENTITY_INSERT is set to OFF.
답변
MSDN에 따라 SQL을 통해
SET IDENTITY_INSERT sometableWithIdentity ON
INSERT INTO sometableWithIdentity
(IdentityColumn, col2, col3, ...)
VALUES
(AnIdentityValue, col2value, col3value, ...)
SET IDENTITY_INSERT sometableWithIdentity OFF
완전한 오류 메시지는 정확히 무엇이 잘못되었는지 알려줍니다 …
IDENTITY_INSERT가 OFF로 설정되어 있으면 ‘sometableWithIdentity’테이블에서 ID 열에 명시 적 값을 삽입 할 수 없습니다.
답변
IDENTITY_INSERT를 ON으로 설정 한 후에도 삽입 할 수없는 문제가있었습니다.
문제는 열 이름을 지정하지 않았고 어떤 이유로 든 좋아하지 않았다는 것입니다.
INSERT INTO tbl Values(vals)
따라서 기본적으로 전체 삽입을 수행하십시오. tbl (cols) Values (vals)
답변
가져 오기 :INSERT
명령문에
열을 작성 해야합니다 .
INSERT INTO TABLE
SELECT * FROM
정확하지 않습니다.
Insert into Table(Field1,...)
Select (Field1,...) from TABLE
맞다
답변
나는 이것이 오래된 실이라는 것을 알고 있지만 나는 이것에 부딪쳤다. 사용자가 다른 세션 Set IDENTITY_INSERT ON 후에 Identity 열에서 삽입을 실행하려고하면 위의 오류가 발생합니다.
Identity Insert 값 설정 및 후속 Insert DML 명령은 동일한 세션에서 실행됩니다.
여기서 @Beginner는 Identity Insert를 별도로 설정 한 다음 응용 프로그램에서 삽입을 실행했습니다. 그래서 그는 아래 오류가 발생합니다 :
Cannot insert explicit value for identity column in table 'Baskets' when
IDENTITY_INSERT is set to OFF.
답변
이것은 PRIMARY KEY 필드가 있고 중복되는 값을 삽입하거나 INSERT_IDENTITY 플래그가 on으로 설정된 경우에 가능합니다.
답변
그것은을 넣어 필요 보이는 SET IDENTITY_INSERT Database.dbo.Baskets ON;
모든 SQL 전에 INSERT
전송 배치.
INSERT ... VALUES ...
처음에 하나의 SET IDENTITY_INSERT ... ON;
문자열로 시작하는 여러 명령을 보낼 수 있습니다 . 배치 구분 기호를 사이에 두지 마십시오.
SET IDENTITY_INSERT ... ON
전송 블록 (예 : .ExecuteNonQuery()
C #에서) 이후에 중지가 작동하는 이유를 모르겠습니다 . SET IDENTITY_INSERT ... ON;
다음 SQL 명령 문자열의 시작 부분에 다시 넣어야 했습니다.
답변
ID 삽입을 설정 한 후 ‘go’명령을 추가해야합니다. 예:
SET IDENTITY_INSERT sometableWithIdentity ON
go
INSERT sometableWithIdentity (IdentityColumn, col2, col3, ...)
VALUES (AnIdentityValue, col2value, col3value, ...)
SET IDENTITY_INSERT sometableWithIdentity OFF
go