Rumah > pangkalan data > tutorial mysql > Bolehkah Kunci Asing MySQL Membenarkan Nilai NULL?

Bolehkah Kunci Asing MySQL Membenarkan Nilai NULL?

Patricia Arquette
Lepaskan: 2025-01-11 10:12:41
asal
175 orang telah melayarinya

Can MySQL Foreign Keys Allow NULL Values?

Adakah kunci asing MySQL membenarkan nilai NULL?

Menguatkuasakan integriti data adalah penting apabila mereka bentuk jadual pangkalan data. Rujukan kepada lajur jadual lain melalui kunci asing memainkan peranan penting dalam mengekalkan sambungan ini. Soalan biasa ialah: Adakah lajur jadual dengan kunci asing membenarkan nilai NULL?

Dalam MySQL menggunakan jenis jadual InnoDB, jawapannya adalah ya. Anda boleh mengisytiharkan lajur kunci asing sebagai batal. Tingkah laku ini membolehkan anda memasukkan baris baharu dengan nilai NULL dalam lajur kunci asing, tetapi menguatkuasakan kekangan apabila memasukkan nilai bukan NULL.

Untuk menggambarkan ini, pertimbangkan contoh berikut:

CREATE TABLE parent (id INT NOT NULL, PRIMARY KEY (id));
CREATE TABLE child (
  id INT NULL,
  parent_id INT NULL,
  FOREIGN KEY (parent_id) REFERENCES parent(id)
);
Salin selepas log masuk

Sekarang, mari masukkan baris ke dalam jadual "anak" dengan "id_ibu bapa" ialah NULL:

INSERT INTO child (id, parent_id) VALUES (1, NULL);
-- 查询成功,影响 1 行 (0.01 秒)
Salin selepas log masuk

Operasi sisipan ini berjaya kerana kami menetapkan nilai NULL untuk lajur "parent_id". Walau bagaimanapun, cubaan memasukkan nilai bukan NULL yang tidak wujud dalam jadual "induk" akan mengakibatkan ralat kerana kekangan kunci asing dikuatkuasakan:

INSERT INTO child (id, parent_id) VALUES (2, 1);

-- 错误 1452 (23000):无法添加或更新子行:外键约束失败 (`t/child`, CONSTRAINT `child_ibfk_1` FOREIGN KEY (`parent_id`) REFERENCES `parent` (`id`))
Salin selepas log masuk

Tingkah laku ini memberikan fleksibiliti dan kawalan ke atas integriti data. Anda boleh membenarkan nilai NULL sementara semasa populasi data sambil masih menguatkuasakan kekangan kunci asing kemudian. Dengan mengurus kekangan NULL dengan teliti pada lajur kunci asing, anda boleh memastikan ketepatan dan ketekalan data anda.

Atas ialah kandungan terperinci Bolehkah Kunci Asing MySQL Membenarkan Nilai NULL?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan