Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Ograniczenie klucza obcego MySQL — kolumna liczb całkowitych

Możesz ustawić swój klucz obcy tak, aby akceptował NULL wartości i użyj NULL zamiast 0 wartość.

Koncepcyjnie NULL oznacza brakującą nieznaną wartość . Jeśli Twój wiersz „nie ma/nie wymaga wartości”, uważam, że NULL pasuje idealnie.

I tak, NULL wartość nie złamałaby ograniczenia klucza obcego.

Zbudujmy podstawowy przykład:

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;

Następnie:

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. Funkcje zaokrąglania MySQL

  2. MySQL - zaznaczanie w pobliżu punktu przestrzennego

  3. Jak ustawić domyślny poziom izolacji bazy danych aplikacji Ruby on Rails 4+?

  4. Pobierz wartość z bazy danych w wybranym tagu HTML PHP MySQL

  5. Zmniejsz tabelę statusu dziennego, aby zawierała tylko zmiany statusu