phpMyAdmin
 sql >> Baza danych >  >> Database Tools >> phpMyAdmin

Autoreferencyjne pola tabeli w MySQL

Jedną z opcji jest ustawienie pola NULL -able i ustaw klucz nadrzędny rekordu głównego na NULL :

CREATE TABLE tb_1 (
   id       int   NOT NULL  PRIMARY KEY,
   value    int   NOT NULL,
   parent   int   NULL,
   FOREIGN KEY (parent) REFERENCES tb_1(id)
) ENGINE=INNODB;
Query OK, 0 rows affected (0.43 sec)

-- This fails:
INSERT INTO tb_1 VALUES (1, 1, 0);
ERROR 1452 (23000): A foreign key constraint fails.

-- This succeeds:
INSERT INTO tb_1 VALUES (1, 1, NULL);
Query OK, 1 row affected (0.08 sec)

W przeciwnym razie nadal możesz użyć NOT NULL klucz nadrzędny i wskaż go do samego rekordu głównego:

CREATE TABLE tb_2 (
   id       int   NOT NULL  PRIMARY KEY,
   value    int   NOT NULL,
   parent   int   NOT NULL,
   FOREIGN KEY (parent) REFERENCES tb_2(id)
) ENGINE=INNODB;
Query OK, 0 rows affected (0.43 sec)

-- This fails:
INSERT INTO tb_2 VALUES (1, 1, 0);
ERROR 1452 (23000): A foreign key constraint fails.

-- This succeeds:
INSERT INTO tb_2 VALUES (1, 1, 1);
Query OK, 1 row affected (0.08 sec)


  1. DBeaver
  2.   
  3. phpMyAdmin
  4.   
  5. Navicat
  6.   
  7. SSMS
  8.   
  9. MySQL Workbench
  10.   
  11. SQLyog
  1. Instalowanie PHP za pomocą Homebrew na MAC

  2. Błąd phpmyadmin #1062 - Zduplikowany wpis '1' dla klucza 1

  3. Znacznik czasu MySQL – dlaczego wszystkie zera?

  4. Zaimportuj plik CSV do MySQL za pomocą phpMyAdmin

  5. edytuj pole blob phpmyadmina