วิธีแก้ไขข้อผิดพลาด 'ไม่สามารถแทรกค่าที่ชัดเจนสำหรับคอลัมน์ข้อมูลประจำตัวในตารางเมื่อ IDENTITY_INSERT ถูกตั้งค่าเป็นปิด'



ลองใช้เครื่องมือของเราเพื่อกำจัดปัญหา

คอลัมน์คีย์หลักมักถูกตั้งค่าให้เพิ่มขึ้นอัตโนมัติเมื่อสร้างฐานข้อมูล SQL Server ขีด จำกัด IDENTITY ถูกตั้งค่าไว้สำหรับคอลัมน์คีย์หลักเพื่อดำเนินการนี้ ตำแหน่งเริ่มต้นและขั้นตอนของการเพิ่มจะถูกโอนไปยังคอลัมน์ IDENTITY เป็นพารามิเตอร์ จากนั้นเมื่อใดก็ตามที่มีการเพิ่มระเบียนใหม่และการแทรกข้อมูลประจำตัวถูกตั้งค่าเป็น OFF ค่าของคอลัมน์ IDENTITY จะเพิ่มขึ้นตามขั้นตอนที่กำหนดไว้ล่วงหน้าโดยปกติจะเป็นตัวเลข ยิ่งไปกว่านั้นคุณสมบัติ IDENTITY INSERT ถูกตั้งค่าเป็น ON สำหรับตารางเดียวในเซสชันเดียว



ในบทความนี้เราจะพูดถึงข้อผิดพลาด “ ไม่สามารถแทรกค่าที่ชัดเจนสำหรับคอลัมน์ข้อมูลประจำตัวในตาราง

เมื่อ IDENTITY_INSERT ถูกตั้งค่าเป็นปิด” ดังแสดงด้านล่าง



การปิด 'IDENTITY INSERT OFF' และการแทรกข้อมูลโดยไม่มี 'PRIMARY KEY ID' ลงในคำสั่ง insert



ข้อผิดพลาดเกิดขึ้นเมื่อผู้ใช้ตั้งค่า“ identity_insert” เป็น“ OFF” จากนั้นพยายามแทรกข้อมูลลงในคอลัมน์คีย์หลักของตารางอย่างชัดเจน สิ่งนี้สามารถอธิบายได้โดยใช้ตัวอย่างด้านล่าง

การสร้างฐานข้อมูลและตาราง:

ขั้นแรกสร้างฐานข้อมูลชื่อ“ appuals”

การสร้างฐานข้อมูลชื่อ 'appuals'



สร้างตารางชื่อ“ บุคคล” โดยใช้รหัสต่อไปนี้ สร้างตารางโดยใช้ไฟล์ “ รหัสประจำตัวหลัก”

สร้างบุคคลในตาราง (ID INT IDENTITY (1, 1), first_name VARCHAR (MAX), last_name VARCHAR (MAX))

การสร้างตารางชื่อ“ คน”

ไวยากรณ์สำหรับการตั้งค่า“ identity_insert off | บน':

“ ตั้งค่า identity_insert ปิด | บน' จะช่วยเราแก้ไขข้อผิดพลาดนี้ ไวยากรณ์ที่ถูกต้องสำหรับคำสั่งนี้มีดังต่อไปนี้

SET IDENTITY_INSERT .
บน

ในขณะที่อาร์กิวเมนต์แรกคือชื่อของฐานข้อมูลที่มีตารางอยู่ อาร์กิวเมนต์ที่สองแสดงคือสคีมาที่ตารางนั้นเป็นของซึ่งต้องตั้งค่าเอกลักษณ์เป็น บน หรือ ปิด . อาร์กิวเมนต์ที่สาม

คือตารางที่มีคอลัมน์ข้อมูลประจำตัว

โดยพื้นฐานแล้วมีสองวิธีที่แตกต่างกันในการแทรกข้อมูลลงในตารางโดยไม่มีข้อผิดพลาด สิ่งเหล่านี้ถือเป็นการแก้ปัญหาข้อผิดพลาดนี้และจะกล่าวถึงด้านล่าง

ข้อผิดพลาด 1: ตั้งค่า identity_insert ปิด

ในกรณีแรกเราจะแทรกข้อมูลลงในตารางด้วยไฟล์ “ ระบุตัวตนแทรก” ตั้งค่าให้ “ ปิด” . ดังนั้นหากมี ID อยู่ในคำสั่ง INSERT คุณจะได้รับข้อผิดพลาด “ ไม่สามารถแทรกค่าที่ชัดเจนสำหรับคอลัมน์ข้อมูลประจำตัวในตาราง 'บุคคล' เมื่อ IDENTITY_INSERT ถูกตั้งค่าเป็นปิด '

ดำเนินการรหัสต่อไปนี้ในแท็บแบบสอบถาม

ตั้งค่า identity_insert person off; ใส่ค่าบุคคล (ID, first_name, last_name) (3, 'Sadia