>데이터 베이스 >MySQL 튜토리얼 >SQL에서 'ID 열에 명시적 값을 삽입할 수 없습니다.' 오류가 발생하는 이유는 무엇이며 어떻게 해결할 수 있습니까?

SQL에서 'ID 열에 명시적 값을 삽입할 수 없습니다.' 오류가 발생하는 이유는 무엇이며 어떻게 해결할 수 있습니까?

DDD
DDD원래의
2025-01-19 09:22:10647검색

Why Does SQL Throw a

"ID 열에 명시적 값을 삽입할 수 없습니다." SQL 오류 문제 해결

SQL 삽입 작업 중에 "IDENTITY_INSERT가 OFF로 설정된 경우 '테이블' 테이블의 ID 열에 명시적 값을 삽입할 수 없습니다."라는 오류가 발생합니까? 본 가이드에서는 원인을 설명하고 해결 방법을 제시합니다. 이 오류는 자동으로 값을 생성하는 ID 열로 지정된 열에 값을 수동으로 할당하려고 할 때 발생합니다.

SQL의 ID 열 이해

ID 열은 자동으로 증가하는 데이터베이스 열로, 일반적으로 기본 키 또는 고유 식별자 역할을 합니다. 데이터베이스는 일반적으로 각각의 새 행에 대해 고정된 단계 값(종종 1)을 추가하는 증분 프로세스를 관리합니다. 이는 데이터베이스 운영 및 참조 무결성에 필수적인 고유하고 순차적인 값을 보장합니다.

오류의 근본 원인

테이블의 IDENTITY_INSERT 속성이 OFF으로 설정된 상태에서 ID 열에 직접 값을 삽입하려고 하면 오류가 발생합니다. 이 설정은 ID 열에 수동으로 값을 할당하는 것을 방지합니다.

오류 해결: 활성화 및 비활성화 IDENTITY_INSERT

해결 방법은 수동 삽입을 허용하기 위해 영향을 받는 테이블에 대해 IDENTITY_INSERT을 일시적으로 활성화하는 것입니다. 과정은 다음과 같습니다.

  1. IDENTITY_INSERT 활성화: 다음 명령을 실행하고 [TableName]을 테이블 이름으로 바꿉니다:

    <code class="language-sql">SET IDENTITY_INSERT [TableName] ON</code>
  2. 삽입 수행: 이제 ID 열에 대한 명시적 값을 사용하여 삽입 문을 실행합니다.

  3. IDENTITY_INSERT 비활성화: 삽입 후 즉시 IDENTITY_INSERT을 비활성화하여 자동 생성 동작을 복원합니다.

    <code class="language-sql">SET IDENTITY_INSERT [TableName] OFF</code>

이렇게 하면 후속 삽입 시 ID 열에 대한 자동 증가 기능을 다시 사용하여 데이터베이스의 무결성이 유지됩니다. 예기치 않은 동작을 방지하려면 수동으로 삽입할 때마다 항상 IDENTITY_INSERT을 비활성화해야 합니다.

위 내용은 SQL에서 'ID 열에 명시적 값을 삽입할 수 없습니다.' 오류가 발생하는 이유는 무엇이며 어떻게 해결할 수 있습니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.