我正在尝试使用以下SQL创建两个表:
create table student(sid char(20) primary key,name char(20),age int,hours char(10) references courses(cid));
create table courses(cid char(10),cname char(10),grader char(20) references student(sid));
但是我收到以下错误:
1:错误:关系“课程”不存在 3:错误:关系“学生”不存在
有没有办法或语法可以解决这个问题?
答案 0 :(得分:2)
不是与具有References
简写的表同时创建外键约束,而是可以使用Alter Table Add Constraint
命令添加其中一个或两个。 See the Alter Table
page in the PostgrSQL manual here.
正如mu指出的那样,外键的目标必须定义Unique
或Primary Key
约束,因此我在下面的示例中的cid
列中添加了该约束
在您的情况下,它可能看起来像这样:
create table student(sid char(20) primary key,name char(20),age int,hours char(10));
create table courses(cid char(10) primary key,cname char(10),grader char(20));
Alter Table student Add Constraint fk_student_hours_cid Foreign Key (hours) References courses(cid);
Alter Table courses Add Constraint fk_courses_grader_sid Foreign Key (grader) References student(sid);
答案 1 :(得分:2)
您需要先创建表(不带REFERENCES子句)。之后通过语句手动创建外键ALTER TABLE mytable ADD CONSTRAINT mytablefk FOREIGN KEY ...但首先我要考虑是否确实存在从表课程到表学生之间的关系!