我对外键有疑问。
当我想在我创建的第一个表中添加外键时,它是如何工作的,这个表引用了我创建的第二个表的主键?
CREATE TABLE table1
(
name_id INT NOT NULL,
team TEXT REFERENCES table2(team_id),
PRIMARY KEY(name_id)
);
CREATE TABLE table2
(
team_id INT NOT NULL,
teamname TEXT,
PRIMARY KEY(team_id)
);
如果我尝试上面的代码,我会收到以下错误:
错误:关系“”不存在
提前致谢。
答案 0 :(得分:1)
首先创建第二个表。或者使用alter table
。也就是说,创建没有引用的第一个表,然后执行:
alter table table1 add constraint fk_table1_team
foreign key (team_id) REFERENCES table2(team_id);
table1
的声明将是:
CREATE TABLE table1 (
name_id INT NOT NULL,
team_id INT,
PRIMARY KEY(name_id)
);
如果有一个整数,那么表之间的引用应该在主键上,当然不应该在字符列上。
答案 1 :(得分:1)
这里是使用外键创建表的语法:
CREATE TABLE table11
(
name_id INT NOT NULL,
team INT,
PRIMARY KEY(name_id),
foreign key(team) references table22(team_id)
);
CREATE TABLE table22
(
team_id INT NOT NULL,
teamname TEXT,
PRIMARY KEY(team_id)
);
但还有另一个问题。子表中的外键如果不包含相同类型,则无法从父文件夹引用主键。在您的代码团队中,TEXT
和team_id是INT
,但不是。{/ p>