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

Batasan Kunci Asing MySQL - Kolom Integer

Anda mungkin ingin mengatur kunci asing Anda untuk menerima NULL nilai, dan gunakan NULL bukannya 0 nilai.

Secara konseptual, NULL berarti nilai tidak diketahui yang hilang . Jika baris Anda "tidak memiliki/membutuhkan nilai", saya yakin NULL sangat cocok.

Dan ya, NULL value tidak akan mematahkan batasan kunci asing Anda.

Mari kita buat contoh dasar:

CREATE TABLE parents (
   id      int PRIMARY KEY, 
   value   int
) ENGINE = INNODB;

CREATE TABLE children (
   id         int PRIMARY KEY, 
   parent_id  int,
   FOREIGN KEY (parent_id) REFERENCES parent (id)
) ENGINE = INNODB;

Kemudian:

INSERT INTO parents VALUES (1, 100);
Query OK, 1 row affected (0.00 sec)

INSERT INTO children VALUES (1, 1);
Query OK, 1 row affected (0.00 sec)

INSERT INTO children VALUES (2, 0);
ERROR 1452 (23000): A foreign key constraint fails

INSERT INTO children VALUES (2, NULL);
Query OK, 1 row affected (0.00 sec)

SELECT * FROM children;
+----+-----------+
| id | parent_id |
+----+-----------+
|  1 |         1 |
|  2 |      NULL |
+----+-----------+
2 rows in set (0.01 sec)


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. MySql:buat kueri ini lebih cepat ... adakah cara?

  2. java.sql.SQLException:Nilai string salah:'\xF0\x9F\x91\xBD\xF0\x9F...'

  3. Apakah ada cara aman untuk membuat parameter nama database dalam kueri MySQL?

  4. MySQL Query untuk memilih data dari minggu lalu?

  5. Mengapa MySQL COUNT tanpa nama tabel memberi 1