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

Czy kolumny tabeli z kluczem obcym mogą mieć wartość NULL?

Tak, ograniczenie można wymusić tylko wtedy, gdy wartość nie jest równa NULL. Można to łatwo przetestować na następującym przykładzie:

CREATE DATABASE t;
USE t;

CREATE TABLE parent (id INT NOT NULL,
                     PRIMARY KEY (id)
) ENGINE=INNODB;

CREATE TABLE child (id INT NULL, 
                    parent_id INT NULL,
                    FOREIGN KEY (parent_id) REFERENCES parent(id)
) ENGINE=INNODB;


INSERT INTO child (id, parent_id) VALUES (1, NULL);
-- Query OK, 1 row affected (0.01 sec)


INSERT INTO child (id, parent_id) VALUES (2, 1);

-- ERROR 1452 (23000): Cannot add or update a child row: a foreign key 
-- constraint fails (`t/child`, CONSTRAINT `child_ibfk_1` FOREIGN KEY
-- (`parent_id`) REFERENCES `parent` (`id`))

Pierwsza wstawka przejdzie, ponieważ wstawiamy NULL w parent_id . Drugie wstawienie nie powiodło się z powodu ograniczenia klucza obcego, ponieważ próbowaliśmy wstawić wartość, która nie istnieje w parent tabela.



  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_num_rows() oczekuje, że parametr 1 będzie zasobem, podana wartość logiczna w

  2. Aktualizacja MySQL PRZYPADEK KIEDY / WTEDY / INACZEJ

  3. MySQL SELECT WHERE datetime pasuje do dnia (a niekoniecznie do godziny)

  4. Amazon EC2, mysql przerywa start, ponieważ InnoDB:mmap (x bajtów) nie powiodło się; errno 12

  5. Jak uzyskać liczbę bitów w ciągu w MySQL — BIT_LENGTH()