本人超级菜鸟,在网上看到了这个:
oracle命令建立主键外键
1、创建一张学生表
[sql]
SQL> create table t_stu(
2 stuid number(10) primary key,
3 stuname varchar2(20) not null,
4 stusex varchar2(2) default '男' check(stusex in('男','女')));
Table created
Executed in 0.547 seconds
2、创建一张课程表
[sql]
SQL> create table t_couse(
2 couseid number(10) primary key,
3 cousename varchar2(20) not null,
4 cousetype varchar2(4));
www.2cto.com
Table created
Executed in 0.062 seconds
3、创建一张学生课程成绩表(包括主外键)
[sql]
SQL> create table t_score(
2 scoreid number(10) primary key,
3 stuid number(10) references t_stu(stuid),
4 couseid number(10),
5 constraint fk_couseid foreign key(couseid)
6 references t_couse(couseid)
7 on delete cascade);
Table created
请问:第三张表中的 3 stuid number(10) references t_stu(stuid), 这一行的作用是什么??? 和接下来的
4 couseid number(10),
5 constraint fk_couseid foreign key(couseid)
6 references t_couse(couseid)
7 on delete cascade);
有什么区别??
第七行 7 on delete cascade 的作用是什么???
为什么不能我把
4 couseid number(10),
5 constraint fk_couseid foreign key(couseid)
6 references t_couse(couseid)
写在同一行中会出现错误:此处不允许约束条件说明。
如:couseid number(10) constraint fk_couseid foreign key(couseid) references t_couse(couseid) ,
谢谢!!!
3 stuid number(10) references t_stu(stuid) 就是这个字段关联t_stu表的stuid字段;
请问这个关联和下面4到7行的外键关联有什么区别???就是有没有做删除操作?
3 stuid number(10) references t_stu(stuid) 建立的外键生成的名字是数据库自己分配的,constraint fk_couseid foreign key(couseid)建立的外键是你自己来命名的,on delete cascade);的意思就是同步关联删除,还有其他的操作,比如更新,设置成默认值等