/*课程 表*/
CREATE TABLE Course
(
Cno CHAR(4) PRIMARY KEY, --课程号
Cname CHAR(40), --课程名称
Cpno CHAR(4), --先修课程的课程号
Ccredit SMALLINT, --学分
FOREIGN KEY Cpno REFERENCES Course(Cno)
);
这个SQL语句是从高教的《数据库系统概论(第四版)》的85页的例6里面摘抄下来的,在SQL Server 2005里面没法执行,请问原因?
难道SQL Server 2005不支持自表的外键约束?

解决方案 »

  1.   

    sql 2000也不支持.外键一般只针对两个不同的表,同一个表用什么外键?以下为联机帮助中的说明.
    FOREIGN KEY 约束
    外键 (FK) 是用于建立和加强两个表数据之间的链接的一列或多列。通过将保存表中主键值的一列或多列添加到另一个表中,可创建两个表之间的链接。这个列就成为第二个表的外键。
      

  2.   

    CREATE TABLE Course
    (
        Cno CHAR(4) PRIMARY KEY,        --课程号
        Cname CHAR(40),                    --课程名称
        Cpno CHAR(4) REFERENCES Course(Cno),                    --先修课程的课程号
        Ccredit SMALLINT--,                --学分
      --  FOREIGN KEY Cpno REFERENCES Course(Cno)
    );
      

  3.   

    CREATE TABLE Course
    (
        Cno CHAR(4) PRIMARY KEY,        --课程号
        Cname CHAR(40),                    --课程名称
        Cpno CHAR(4) ,                    --先修课程的课程号
        Ccredit SMALLINT ,               --学分
        CONSTRAINT Cpno_cno FOREIGN KEY (Cpno) REFERENCES Course(Cno)
    );
      

  4.   

    或者
    CREATE TABLE Course
    (
        Cno CHAR(4) PRIMARY KEY,        --课程号
        Cname CHAR(40),                    --课程名称
        Cpno CHAR(4) ,                    --先修课程的课程号
        Ccredit SMALLINT ,               --学分
        FOREIGN KEY (Cpno) REFERENCES Course(Cno)
    );