Rumah >pangkalan data >tutorial mysql >Mengapa Saya Tidak Boleh Memasukkan Nilai ke dalam Lajur Identiti, dan Bagaimana Saya Membetulkannya?

Mengapa Saya Tidak Boleh Memasukkan Nilai ke dalam Lajur Identiti, dan Bagaimana Saya Membetulkannya?

Patricia Arquette
Patricia Arquetteasal
2025-01-19 09:12:10730semak imbas

Why Can't I Insert a Value into an Identity Column, and How Do I Fix It?

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:

  1. Dayakan IDENTITY_INSERT: Gunakan arahan SQL berikut, gantikan TableName dengan nama jadual anda:
<code class="language-sql">SET IDENTITY_INSERT TableName ON</code>
  1. Lakukan INSERT: Kini anda boleh melaksanakan pernyataan 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>
  1. Lumpuhkan 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!

Kenyataan:
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