create table 学生(学号 char(10) ,姓名 char(10), 性别 char(2),primary key (学号));
create table 课程(课号 char(10),课程名 char(10),课时 int,学分 int),primary key (课号));
create table 成绩(学号 char(10),课号 char(10),成绩 int,primary key(学号,课号),foreign key(学号) references 学生 on delete cascade,foreign key(课号) references 课程 on delete restrict);对成绩这张表的要求是 
当 从学生这张表中删除一条记录时,从成绩表中也删除对应学号的记录,
当 从课程这种表中删除一条记录时,如果成绩表中已经有有对应课号的记录,将不能删除。教程里面给的语句的例子就是上面的三条,可是我在SQL2000里输入相同的语句却出现错误,前两条语句都可以通过
第三条提示错误 “在关键字 'restrict' 附近有语法错误。”我不知道为什么会出现个错误,是restrict语法不对吗?在SQL2000的联机丛书中也没有找到还有正确的语句应该怎么写啊?

解决方案 »

  1.   

    on delete  CASCADE ??这个
      

  2.   


    我看的教程里面  就是 把学生表中的学号 作为成绩表中学号的外键 用“on delete cascade”做约束,当从学生表中删除一条记录时,系统会自动从成绩表中删除与学生表中学号相同的记录
      

  3.   

    可我问的是:前两条语句都可以通过
    第三条提示错误 “在关键字 'restrict' 附近有语法错误。”我不知道为什么会出现个错误,是restrict语法不对吗?在SQL2000的联机丛书中也没有找到还有正确的语句应该怎么写啊?
    囧。
      

  4.   

    t-sql没有restrict联机丛书是这样的.
     ON DELETE { NO ACTION | CASCADE | SET NULL | SET DEFAULT } ]
    [ ON UPDATE { NO ACTION | CASCADE | SET NULL | SET DEFAULT } ]
      

  5.   

    不用加on delete默认情况下是会出错的.
      

  6.   

    谢谢 liangCK试了一下 是这样的