Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

Ràng buộc khóa ngoại MySQL - Cột số nguyên

Bạn có thể muốn đặt khóa ngoại của mình để chấp nhận NULL và sử dụng NULL thay vì 0 giá trị.

Về mặt khái niệm, NULL có nghĩa là một thiếu giá trị không xác định . Nếu hàng của bạn "không có / cần giá trị", tôi tin rằng NULL hoàn toàn phù hợp.

Và có, một NULL giá trị sẽ không phá vỡ ràng buộc khóa ngoại của bạn.

Hãy xây dựng một ví dụ cơ bản:

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;

Sau đó:

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:Tại sao thoát không hoạt động trong toán tử LIKE?

  2. Lệnh gọi Ajax trả về toàn bộ trang thay vì chỉ giá trị echo

  3. java.sql.SQLException:Biến hệ thống không xác định 'query_cache_size'

  4. MYSQL sum () cho các hàng riêng biệt

  5. Hàm thay thế mysql_list_tables () trong php 5 là gì