sql >> Database >  >> RDS >> Mysql

MySQL Foreign Key Constraint - Kolom Integer

Misschien wilt u uw externe sleutel instellen om NULL te accepteren waarden, en gebruik een NULL in plaats van een 0 waarde.

Conceptueel, NULL betekent een ontbrekende onbekende waarde . Als je rij "de waarde niet heeft/nodig heeft", geloof ik dat een NULL past perfect.

En ja, een NULL waarde zou uw externe sleutelbeperking niet doorbreken.

Laten we een eenvoudig voorbeeld bouwen:

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;

Dan:

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. 4 redenen waarom u prioriteit zou moeten geven aan databasebewaking in uw planning voor 2020

  2. Waarschuwing:de stap na de installatie is niet succesvol voltooid, bij het installeren van mysql met brew in Mac OS High Sierra

  3. .sql-bestand importeren in Access

  4. MySQL en PDO:zou PDO::lastInsertId theoretisch kunnen mislukken?