gpt4 book ai didi

database - 数据库是否接受循环引用?

转载 作者:太空狗 更新时间:2023-10-30 01:39:23 24 4
gpt4 key购买 nike

什么时候数据库可以接受循环引用?

理论和实践,任何帮助表示赞赏。

最佳答案

考虑城市和州。每个城市都存在于一个州内。每个州都有一个首都。

CREATE TABLE city (
city VARCHAR(32),
state VARCHAR(32) NOT NULL,
PRIMARY KEY (city),
FOREIGN KEY (state) REFERENCES state (state)
);

CREATE TABLE state (
state VARCHAR(32),
capital_city VARCHAR(32),
PRIMARY KEY (state),
FOREIGN KEY (capital_city) REFERENCES city (city)
);

第一个问题 - 您不能如图所示创建这些表,因为外键不能引用(还)不存在的表中的列。解决方案是在没有外键的情况下创建它们,然后再添加外键。

第二个问题 - 您不能将行插入到任何一个表中,因为每次插入都需要另一个表中预先存在的行。解决方案是设置其中之一外键列为 NULL,并分两个阶段插入该数据。例如

--Create state record
INSERT INTO state (state, capital_city) VALUES ('Florida', NULL);

--Create various city records
INSERT INTO city (city, state) VALUES ('Miami', 'Florida');
INSERT INTO city (city, state) VALUES ('Tallahassee', 'Florida');
INSERT INTO city (city, state) VALUES ('Orlando', 'Florida');

--Set one of the cities as the capital
UPDATE state SET capital_city = 'Tallahassee' WHERE state = 'Florida';

关于database - 数据库是否接受循环引用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1006917/

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