速掌握DB2数据库创建外键时的选项
2009-11-11 09:45
218 查看
教你快速掌握DB2数据库创建外键时的选项
创建外键时的选项:
1.创建测试表:
drop table student;
drop table class;
drop table student_class;
Create table student(student_id integer not null,student_name varchar(200), CONSTRAINT P_KEY_1 primary key (student_id)) in luzl_32k_tb index in luzl_32k_tb ;
Create table class(class_id integer not null,class_name varchar(200), CONSTRAINT P_KEY_2 primary key (class_id)) ;
Create table student_class(student_class_id integer,student_id integer,class_id integer) ;
alter table student_class add constraint if_class foreign key(class_id) references class(class_id) ON DELETE cascade ON UPDATE RESTRICT;
alter table student_class add constraint if_student foreign key(student_id) references student(student_id) ON DELETE cascade ON UPDATE RESTRICT;
Insert into student(student_id,student_name) values(1,'luzl');
Insert into class(class_id,class_name) values(1,'db2');
Insert into student_class(student_class_id,student_id,class_id) values(1,1,1);
2.On Delete 的选项有:
Restrict/no action/cascade/set null.其中cascade选项指定的话,如果删除父记录,依赖于他的子记录也会自动删除.相当于级联删除.如果指定no action和cascade都会报错,因为还有子记录所以无法删除该记录.set nul允许删除父记录并且l会将子表中与父表关联的字段设置为null.
3.On Update 只有两个选项 no action/restrict.它们在更新和删除时并没有区别。如果与子表关联不允许删除.
4.另外还需要注意一点,父表中的字段必须是主键,才能做为子表的外键。
创建外键时的选项:
1.创建测试表:
drop table student;
drop table class;
drop table student_class;
Create table student(student_id integer not null,student_name varchar(200), CONSTRAINT P_KEY_1 primary key (student_id)) in luzl_32k_tb index in luzl_32k_tb ;
Create table class(class_id integer not null,class_name varchar(200), CONSTRAINT P_KEY_2 primary key (class_id)) ;
Create table student_class(student_class_id integer,student_id integer,class_id integer) ;
alter table student_class add constraint if_class foreign key(class_id) references class(class_id) ON DELETE cascade ON UPDATE RESTRICT;
alter table student_class add constraint if_student foreign key(student_id) references student(student_id) ON DELETE cascade ON UPDATE RESTRICT;
Insert into student(student_id,student_name) values(1,'luzl');
Insert into class(class_id,class_name) values(1,'db2');
Insert into student_class(student_class_id,student_id,class_id) values(1,1,1);
2.On Delete 的选项有:
Restrict/no action/cascade/set null.其中cascade选项指定的话,如果删除父记录,依赖于他的子记录也会自动删除.相当于级联删除.如果指定no action和cascade都会报错,因为还有子记录所以无法删除该记录.set nul允许删除父记录并且l会将子表中与父表关联的字段设置为null.
3.On Update 只有两个选项 no action/restrict.它们在更新和删除时并没有区别。如果与子表关联不允许删除.
4.另外还需要注意一点,父表中的字段必须是主键,才能做为子表的外键。
相关文章推荐
- 在创建表关系使得外键关系对话框中,有几个可设置的的选项。
- Oracle 创建外键约束使用 on delete cascade 或者 on delete set null 选项
- 该文件没有程序与之关联来执行操作,请在控制面板的文件夹选项中创建关联的解决办法
- crm创建和编辑全局选项集
- 简单掌握Linux系统中fork()函数创建子进程的用法
- 创建并响应选项菜单
- 创建外键
- mysql 创建外键:ERROR 1005: Can't create table
- 全面掌握 Node 命令选项
- 创建动态库时,建议使用的链接选项Bsymbolic
- mysql之创建外键报150错误的处理方法
- 不允许保存更改。你所做的更改要求删除并重现创建以下表,你对无法重新创建的表进行了更改或者启用了用“阻止保存要求重新创建表的更改”选项“。
- Jira:必选项设置(创建缺陷、修复缺陷)
- 创建主键与外键的命令
- DB2: 为DB2数据库创建新用户帐户并为其分配特定特权
- Android创建一个选项菜单
- ORACLE数据库创建表、自增主键、外键相关语法
- Android菜单详解(二)——创建并响应选项菜单
- Mysql创建外键约束时,报errno: 150
- navicat中的mysql创建外键