sql >> Databasteknik >  >> Database Tools >> phpMyAdmin

Självrefererande tabellfält i MySQL

Ett alternativ är att göra ditt fält NULL -able, och ställ in rotpostens överordnade nyckel till 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)

Annars kan du fortfarande använda en NOT NULL överordnad nyckel och peka den till själva rotposten:

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. Hur skapar jag en konfigurationsfil för phpMyAdmin?

  2. Hur kan jag släppa flera primärnycklar i phpmyadmin-tabeller?

  3. Finns det ett verktyg som phpMyAdmin som kan konfigureras för att bara komma åt en enda databas?

  4. phpMyAdmin-konfigurationslagringen är inte helt konfigurerad