gpt4 book ai didi

sql - MySQL 中的自引用表字段

转载 作者:IT老高 更新时间:2023-10-29 00:07:20 25 4
gpt4 key购买 nike

我有一个表,它有一个引用自身的“外键”。这将非常有用,除非我不确定如何将第一条记录添加到这样的表中。无论我添加什么,我都无法为表本身提供有效的“外”键,因为它还没有任何条目。也许我没有正确地解决这个问题,但我希望这张表代表始终是其自身成员的东西。有没有一种方法可以“引导”这样的表,或者有其他方法可以进行 self 引用?

最佳答案

一个选项是使您的字段NULL 可用,并将根记录的父键设置为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)

关于sql - MySQL 中的自引用表字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2971593/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com