prosource

아이덴티티를 바꾸는 방법_SQL Server 2008을 사용하여 INSERT On/Off?

probook 2023. 5. 3. 21:32
반응형

아이덴티티를 바꾸는 방법_SQL Server 2008을 사용하여 INSERT On/Off?

삽입할 때 오류가 발생하는 이유는 무엇입니까?IDENTITY_INSERTOFF로 설정되어 있습니까?

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

완전한 오류 메시지를 통해 정확히 무엇이 잘못되었는지 알 수 있습니다.

'sometable' 테이블에 ID 열에 대한 명시적 값을 삽입할 수 없습니다.IDENTITY_일 때 'IDENTITY로'INSERT가 OFF로 설정되어 있습니다.

IDENTITY_ 설정 후에도 삽입이 허용되지 않는 문제가 있었습니다.삽입합니다.

문제는 제가 칼럼 이름을 명시하지 않았고 어떤 이유에서인지 그것이 마음에 들지 않았다는 것입니다.

INSERT INTO tbl Values(vals)

따라서 기본적으로 전체 INSERT INTO tbl(cols) 값(vals)을 수행합니다.

가져오기: 열을 작성해야 합니다.INSERT진술

INSERT INTO TABLE
SELECT * FROM    

정확하지 않습니다.

Insert into Table(Field1,...)
Select (Field1,...) from TABLE

맞습니까?

이것이 오래된 스레드인 것은 알지만 저는 그냥 이것과 부딪쳤습니다.사용자가 다른 세션 후 IDITY 열에 대한 삽입을 실행하려는 경우 IDITY 설정_INSERT ON, 그러면 그는 위의 오류를 얻게 될 것입니다.

Identity Insert 값 설정과 이후의 Insert DML 명령은 동일한 세션에서 실행됩니다.

여기서 @Beginner는 Identity Insert를 별도로 설정한 다음 자신의 애플리케이션에서 삽입을 실행하고 있었습니다.이것이 그가 다음 오류를 얻은 이유입니다.

Cannot insert explicit value for identity column in table 'Baskets' when 
IDENTITY_INSERT is set to OFF.

다음을 입력할 필요가 있습니다.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 명령 문자열의 시작 부분에 다시 입력합니다.

주 키 필드가 있고 중복되는 값을 삽입하거나 INSERT_IDENITY 플래그를 on으로 설정한 경우가 이에 해당합니다.

또 다른 옵션은 'type' 또는 'status'와 같은 테이블이 있는 경우입니다. 예를 들어, ID 값을 항상 제어하려는 OrderStatus에서는 ID 열 없이 ID(기본 키) 열을 만듭니다.

언급URL : https://stackoverflow.com/questions/7063501/how-to-turn-identity-insert-on-and-off-using-sql-server-2008

반응형