Mysql
 sql >> база данни >  >> RDS >> Mysql

Ограничение на външния ключ на MySQL – Целочислена колона

Може да искате да настроите външния си ключ да приема NULL стойности и използвайте NULL вместо 0 стойност.

Концептуално, NULL означава липсваща неизвестна стойност . Ако вашият ред "няма/нуждае се от стойността", смятам, че NULL пасва идеално.

И да, NULL стойността няма да наруши ограничението ви за външен ключ.

Нека изградим основен пример:

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;

След това:

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 REPLACE INTO на няколко клавиша?

  2. Извличане на последния ред с времеви клеймо от таблицата с помощта на INNER JOIN

  3. MySQL ::Изберете от разделен със запетая низ

  4. преобразуване на низ от дата в поле за дата и час на mysql

  5. Миграция на Laravel – нарушение на ограничението за целостта:1452 Не може да се добави или актуализира дъщерен ред:ограничение за външен ключ не успява