sql >> Databáze >  >> Database Tools >> phpMyAdmin

Pole sebereferenční tabulky v MySQL

Jednou z možností je nastavit pole NULL -able a nastavte rodičovský klíč kořenového záznamu 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)

Jinak můžete stále používat NOT NULL rodičovský klíč a nasměrujte jej na samotný kořenový záznam:

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. vzdálený phpmyadmin se nemůže přihlásit, ale klient mysql ano

  2. jak zajistit, aby phpMyAdmin správně importoval datum a čas z csv?

  3. Jak používat Součet a Vnitřní spojení v příkazu delete a přidat do něj třetí tabulku

  4. Výsledky SSMS jako odkaz, na který lze kliknout