Menyelesaikan masalah Ralat "Tidak Dapat Memasukkan Nilai Eksplisit untuk Lajur Identiti"
Apabila anda cuba memasukkan nilai secara manual ke dalam lajur identiti (lajur memberikan nilai jujukan unik secara automatik oleh pangkalan data), anda akan menghadapi ralat "Tidak boleh memasukkan nilai eksplisit untuk lajur identiti dalam jadual 'jadual' apabila IDENTITY_INSERT adalah ditetapkan kepada MATI." Ini berlaku kerana lajur identiti direka bentuk untuk mengurus sendiri nilainya.
Penyelesaian: Mendayakan IDENTITY_INSERT buat sementara waktu
Penyelesaian adalah untuk mendayakan sementara IDENTITY_INSERT
untuk jadual tertentu. Tetapan ini mengatasi penjanaan nilai automatik. Inilah prosesnya:
IDENTITY_INSERT
: Gunakan arahan SQL berikut, gantikan TableName
dengan nama jadual anda:<code class="language-sql">SET IDENTITY_INSERT TableName ON</code>
INSERT
anda dengan nilai eksplisit untuk lajur identiti. Contohnya:<code class="language-sql">INSERT INTO TableName (IdentityColumnName, Column2, Column3) VALUES (100, 'Some Value', 'Another Value');</code>
IDENTITY_INSERT
: Yang penting, selepas sisipan, lumpuhkan IDENTITY_INSERT
untuk memulihkan kelakuan lajur identiti automatik:<code class="language-sql">SET IDENTITY_INSERT TableName OFF</code>
Contoh Ilustrasi:
Pertimbangkan jadual Orders
dengan lajur identiti OrderID
. Untuk memasukkan rekod dengan OrderID
tertentu, anda perlu melakukan ini:
<code class="language-sql">SET IDENTITY_INSERT Orders ON; INSERT INTO Orders (OrderID, CustomerID, OrderDate) VALUES (12345, 1, '2024-03-08'); SET IDENTITY_INSERT Orders OFF;</code>
Ini membolehkan anda memasukkan nilai 12345
ke dalam lajur OrderID
. Ingat untuk sentiasa melumpuhkan IDENTITY_INSERT
selepas sisipan anda untuk mengekalkan integriti lajur identiti anda.
Atas ialah kandungan terperinci Mengapa Saya Tidak Boleh Memasukkan Nilai ke dalam Lajur Identiti, dan Bagaimana Saya Membetulkannya?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!