Rumah > pangkalan data > tutorial mysql > Mengapakah SQL Melemparkan Ralat 'Tidak Dapat Memasukkan Nilai Eksplisit untuk Lajur Identiti' dan Bagaimana Saya Boleh Membetulkannya?

Mengapakah SQL Melemparkan Ralat 'Tidak Dapat Memasukkan Nilai Eksplisit untuk Lajur Identiti' dan Bagaimana Saya Boleh Membetulkannya?

DDD
Lepaskan: 2025-01-19 09:22:10
asal
702 orang telah melayarinya

Why Does SQL Throw a

Menyelesaikan masalah Ralat SQL "Tidak Dapat Memasukkan Nilai Eksplisit untuk Lajur Identiti"

Menghadapi ralat "Tidak boleh memasukkan nilai eksplisit untuk lajur identiti dalam jadual 'jadual' apabila IDENTITY_INSERT ditetapkan kepada MATI" semasa operasi sisipan SQL? Panduan ini menerangkan punca dan menyediakan penyelesaian. Ralat ini berlaku apabila anda cuba menetapkan nilai secara manual kepada lajur yang ditetapkan sebagai lajur identiti, yang menjana nilai secara automatik.

Memahami Lajur Identiti dalam SQL

Lajur identiti ialah lajur pangkalan data yang meningkat secara automatik, biasanya berfungsi sebagai kunci utama atau pengecam unik. Pangkalan data menguruskan proses penambahan, biasanya menambah nilai langkah tetap (selalunya 1) untuk setiap baris baharu. Ini memastikan nilai yang unik, berjujukan, penting untuk operasi pangkalan data dan integriti rujukan.

Punca Ralat

Ralat timbul daripada cubaan memasukkan nilai terus ke dalam lajur identiti manakala sifat IDENTITY_INSERT jadual ditetapkan kepada OFF. Tetapan ini menghalang penetapan nilai manual kepada lajur identiti.

Menyelesaikan Ralat: Mendayakan dan Melumpuhkan IDENTITY_INSERT

Penyelesaian melibatkan pendayaan sementara IDENTITY_INSERT untuk jadual yang terjejas membenarkan pemasukan manual. Inilah prosesnya:

  1. Dayakan IDENTITY_INSERT: Jalankan arahan berikut, gantikan [TableName] dengan nama jadual anda:

    <code class="language-sql">SET IDENTITY_INSERT [TableName] ON</code>
    Salin selepas log masuk
  2. Lakukan Sisipan: Sekarang, laksanakan pernyataan sisipan anda dengan nilai eksplisit untuk lajur identiti.

  3. Lumpuhkan IDENTITY_INSERT: Selepas pemasukan, lumpuhkan segera IDENTITY_INSERT untuk memulihkan gelagat penjanaan automatik:

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

Ini memastikan bahawa sisipan seterusnya akan menggunakan ciri kenaikan automatik untuk lajur identiti, mengekalkan integriti pangkalan data anda. Ingat untuk sentiasa melumpuhkan IDENTITY_INSERT selepas setiap sisipan manual untuk mengelakkan tingkah laku yang tidak dijangka.

Atas ialah kandungan terperinci Mengapakah SQL Melemparkan Ralat 'Tidak Dapat Memasukkan Nilai Eksplisit untuk Lajur Identiti' dan Bagaimana Saya Boleh Membetulkannya?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan