sql >> Databáze >  >> RDS >> Mysql

Omezení cizího klíče MySQL – celočíselný sloupec

Možná budete chtít nastavit cizí klíč tak, aby přijímal NULL hodnoty a použijte NULL místo 0 hodnotu.

Koncepčně NULL znamená chybějící neznámou hodnotu . Pokud váš řádek "nemá/nepotřebuje hodnotu", věřím, že NULL perfektně zapadá.

A ano, NULL hodnota by nenarušila vaše omezení cizího klíče.

Vytvořme základní příklad:

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;

Potom:

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. Použití data v kontrolním omezení, Oracle

  2. výběr dat z tabulky na základě data

  3. Jak získat aktuální datum a čas v MySQL

  4. Jak mohu importovat geoDataFrame do MySQL?