-2

我正在尝试使用以下 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:错误:关系“学生”不存在

有什么方法或语法可以解决这个问题吗?

4

2 回答 2

2

References与其在使用速记表的同时创建外键约束,不如在之后使用Alter Table Add Constraint命令添加其中一个或两个。请参阅Alter Table此处的 PostgrSQL 手册中的页面。

正如 mu 所指出的,外键的目标必须定义一个UniqueorPrimary 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);
于 2013-10-26T17:56:21.793 回答
2

您需要先创建表(没有 REFERENCES 子句)。之后,通过语句 ALTER TABLE mytable ADD CONSTRAINT mytablefk FOREIGN KEY 手动创建外键...但首先我会考虑是否真的存在从表课程到表学生的关系!

于 2013-10-26T18:02:24.480 回答