phpMyAdmin
 sql >> база данни >  >> Database Tools >> phpMyAdmin

Полета за самореферентна таблица в MySQL

Една от опциите е да направите полето си NULL -able и задайте родителския ключ на основния запис на 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)

В противен случай все още можете да използвате NOT NULL родителски ключ и го насочете към самия основен запис:

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. PHPMyAdmin казва:Използваната команда не е разрешена с тази версия на MySQL

  2. MYSQL:Как да направя NULL или празните данни по подразбиране на 0 по време на вмъкване

  3. Не може да се свърже с mysql база данни [phpmyadmin]

  4. phpMyAdmin Не може да зареди или запази конфигурацията

  5. как да копирам само различни стойности от една таблица в друга в Mysql?