SQL> create table Student(
  2  Sno char(9),
  3  Sname char(20) not null,
  4  Ssex char(2),
  5  Sage smallint,
  6  Sdept char(20),
  7  PRIMARY KEY(Sno)
  8  );表已创建。SQL> create table Course(
  2  Cno char(4) primary key,
  3  Cname char(12),
  4  Ccredit NUMBER(2,1)
  5  );表已创建。

SQL> create table sc(
  2  sno char (9) not null,
  3  cno char (4) not null,
  4  grade smallint,
  5  primary key( sno,cno),
  6  foreign key(sno) references student(sno) on update cascade,
  7  foreign key(cno) references course(cno) on delete no action
  8  );
foreign key(sno) references student(sno) on update cascade,
                                            *
第 6 行出现错误:
ORA-00905: 缺失关键字

解决方案 »

  1.   

    ORACLE 没有级联更新 只能是用触发器来 
      

  2.   

    本帖最后由 inthirties 于 2010-11-01 08:59:54 编辑
      

  3.   

    SQL> create table sc(
    2 sno char (9) not null,
    3 cno char (4) not null,
    4 grade smallint,
    5 primary key( sno,cno),
    7 foreign key(cno) references course(cno) on delete no action
    8 );
    这里不能要 foreign key(sno) references student(sno) on update cascade,这句,因为oracle在检查级联更新时,由于处理方式与其他数据库不通,所以这里会造成外键约束不一致,因此处理这个,只能用触发器或者其他手段来实现。这里只能级联删除,不能级联更新。