Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

Bisakah kolom tabel dengan Kunci Asing menjadi NULL?

Ya, Anda dapat menerapkan batasan hanya jika nilainya bukan NULL. Ini dapat dengan mudah diuji dengan contoh berikut:

CREATE DATABASE t;
USE t;

CREATE TABLE parent (id INT NOT NULL,
                     PRIMARY KEY (id)
) ENGINE=INNODB;

CREATE TABLE child (id INT NULL, 
                    parent_id INT NULL,
                    FOREIGN KEY (parent_id) REFERENCES parent(id)
) ENGINE=INNODB;


INSERT INTO child (id, parent_id) VALUES (1, NULL);
-- Query OK, 1 row affected (0.01 sec)


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

-- ERROR 1452 (23000): Cannot add or update a child row: a foreign key 
-- constraint fails (`t/child`, CONSTRAINT `child_ibfk_1` FOREIGN KEY
-- (`parent_id`) REFERENCES `parent` (`id`))

Sisipan pertama akan lolos karena kita menyisipkan NULL di parent_id . Penyisipan kedua gagal karena batasan kunci asing, karena kami mencoba memasukkan nilai yang tidak ada di parent tabel.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Apakah ada cara untuk mengambil ID peningkatan otomatis dari pernyataan yang disiapkan

  2. Mengimpor data CSV menggunakan PHP/MySQL

  3. Injeksi SQL yang mengatasi mysql_real_escape_string()

  4. SQL Memilih dari dua Tabel dengan gabungan dan batas dalam

  5. Bagaimana saya menyimpan dan mengambil gambar di server saya di aplikasi web java