oracle中级联删除
来源:互联网 发布:淘宝开鲜花店 编辑:程序博客网 时间:2024/06/06 18:07
oracle中级联删除
级联删除:删除包含主键值的行的操作,该值由其它表的现有行中的外键列引用。在级联删除中,还删除其外键值引用删除的主键值的所有行。
创建表:
create table a
(
);
create table b
(
)
准备数据:
insert into a values('23','aaa');
insert into b values('das','11');
表b外键参考了表a的主键,我们可以把表a看做主表,表b看做子表。此时如果想要删除主表,必须先要删除子表。那么有没有其他办法可以在不删除子表的情况下,删除主表呢?有,使用级联删除,使用方法如下:
drop table a cascade constraint ;
此时,我们发现主表a已经被删除了,子表b并没有被删除,子表b中外键约束被删除了。
这样的级联删除方法只会drop 表的时候有些,我们并不能对删除某条记录的时候使用该方法。例如,在执行“
那么用什么办法才可以做的到呢?答案是在建表的时候外键约束中加入级联删除。
首先,删除表
drop table a;
drop table b;
创建表:
create table a
(
);
create table b
(
name varchar(50) not null,
userId varchar(20),
foreign key (userId) references a(id) on delete cascade
);
准备数据:
insert
insert
此时运行delete from a where a.id = '11' 发现,b中“da”“das”两条数据被级联删除了。
总结:
1.在实际的软件开发中尽量不要使用级联删除,如果主表中删除一条数据,将使多张子表中多条数据同时删除。
2.外键相当于一个指针,它指向主表。我们可以把外键看成一个引用,主表看成一个对象,当有引用(外键)指向某张表(对象)时,该表无法进行删除(类似与java中当有引用指向对象时,java虚拟机的垃圾收集器不会对该对象进行回收)
参考文章:
http://baike.baidu.com/view/690105.htm
http://www.verycd.com/topics/2737865/
- oracle中级联删除
- oracle级联删除
- Oracle级联删除收集
- ORACLE级联删除
- oracle级联删除
- ORACLE 级联删除
- oracle 级联删除
- ORACLE级联删除
- oracle级联删除 触发器
- oracle 级联删除
- Oracle级联删除
- oracle级联删除
- Oracle中的级联删除
- oracle 级联删除与级联更新小结
- oracle 级联删除与级联更新小结
- Oracle数据库中表格的级联删除问题
- oracle外键值级联删除
- Oracle级联更新和删除
- sql 生成流水号
- [模拟器问题] 关于ActivityManager: Error: Activity class {..} does not exist. 的解决
- Oracle EBS Form CUSTOM.PLL详解
- [SSH]关于cglib 2.1.3.jar
- 利用TESLA GPU和MATLAB实现大规模型数据并行处理
- oracle中级联删除
- Hibernate构建映射文件时。表中要有主键
- 谈AMF和AMF Message
- 80C52、AT89C52的定时/计数器2
- ubuntu 搭建LAMP(Apache+PHP+MYSQL)开发环境
- 再留恋也留不住,再坚强也强不过命!
- 一些简单面试题
- 关于Extjs2.0日期控件(DateField)在FireFox3下
- ORACLE ERP 的前世今生