sql >> Database teknologi >  >> RDS >> Mysql

MySQL Foreign Key Constraint - Heltalskolonne

Du vil måske indstille din fremmednøgle til at acceptere NULL værdier, og brug en NULL i stedet for en 0 værdi.

Konceptuelt, NULL betyder en manglende ukendt værdi . Hvis din række "ikke har/bruger værdien", tror jeg en NULL passer perfekt ind.

Og ja, en NULL værdi ville ikke bryde din fremmednøglebegrænsning.

Lad os bygge et grundlæggende eksempel:

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;

Så:

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. selectArgs i SQLiteQueryBuilder virker ikke med heltalsværdier i kolonner

  2. Hvad er der galt med min SQL Fiddle-forespørgsel?

  3. Upload flere billeder med PHP, der kun gemmer én filsti til MySQL-databasen

  4. PostgreSQL returnerer en funktion med en brugerdefineret datatype