Kin ได้แสดงวิธีที่คุณสามารถรีเซ็ตค่าตัวตน แต่นอกสภาพแวดล้อมการพัฒนาเมื่อคุณลบข้อมูลทั้งหมดออกจริง ๆทำไมคุณต้องทำสิ่งนี้
ฉันหวังว่าคุณจะไม่ตั้งใจที่จะรักษาลำดับของค่าตัวตนที่ต่อเนื่องกันเมื่อคุณอยู่ในการผลิต และฉันหวังว่าคุณจะไม่ได้เขียนรหัสของคุณเพื่อฮาร์ดโค้ดค่า IDENTITY หากค่าเหล่านี้เป็นค่า ID ที่มีความหมายคุณควรหยุดใช้คุณสมบัติตัวตน
มีบางสิ่งที่จะป้องกันไม่ให้เกิดเหตุการณ์เช่นนี้:
- หากมีการกำหนดค่าตัวตนระหว่างการทำธุรกรรมและธุรกรรมถูกย้อนกลับค่าจะไม่ "ให้กลับมา" และค่าถัดไปจะเป็นค่าที่ไม่เคยใช้ + 1
- หากแถวถูกลบในภายหลัง IDENTITY จะไม่กลับมาเติมในช่องว่าง
- มีข้อผิดพลาดที่ใช้งานอยู่ใน SQL Server 2012 ที่
จะไม่ได้รับการแก้ไขจนกว่า SQL Server 2014 จะไม่ได้รับการแก้ไข (เว้นแต่คุณจะใช้การตั้งค่าสถานะการสืบค้นกลับที่ไม่มีเอกสารและมีราคาแพงมาก) โดยการรีสตาร์ทจะปรากฏขึ้น . ข้อผิดพลาดในการเชื่อมต่อแสดงให้เห็นว่าสิ่งนี้ จำกัด อยู่ที่เหตุการณ์ความล้มเหลวที่เกี่ยวข้องกับกลุ่มความพร้อมใช้งาน แต่ฉันสามารถรับรองคุณได้ว่าข้อผิดพลาดนั้นกว้างกว่านั้นมาก
กล่าวโดยย่อหากคุณสนใจเกี่ยวกับช่องว่างหรือต้องการให้ความหมายเฉพาะกับค่าเหล่านี้หยุดใช้ตัวตน ปล่อยและสร้างตารางใหม่และเมื่อคุณต้องการลบค่าและเติมข้อมูลอีกครั้งทำการอัปเดตหรือทำการแทรกด้วยค่าที่กำหนดโค้ดยากสำหรับคอลัมน์นั้น
นอกเหนือจากนี้คีย์หลักและตัวตนไม่เหมือนกัน คอลัมน์ข้อมูลประจำตัวไม่ใช่คีย์หลักยกเว้นว่าคุณกำหนดไว้อย่างชัดเจนและคุณสามารถมีคีย์หลักที่ไม่ใช่คอลัมน์ข้อมูลประจำตัวได้