暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

12C Truncate Table Cascade-级联截断表

原创 章芋文 2013-11-01
1959
在12C中可以使用Truncate Table Cascade,级联截断表,即通过定义外键来实现,且外键必须加上ON DELETE CASCADE参数,也就是在原来的级联删除上,可以直接级联截断表。
先来看看级联删除,比如员工离职要从公司信息中删除某个员工的信息,而员工的信息再多个表中存在,此时就可以用级联删除,集删除一个表的中数据,其他表中的这个员工的数据都会级联删除
1、创建2张测试表:
[code]SQL> create table t_ca (id number(5) PRIMARY KEY,name varchar2(30));

Table created.

SQL> create table t_ca_phone(id number(5) PRIMARY KEY,phone_num varchar2(11),CONSTRAINT t_ca_fk FOREIGN KEY(id) REFERENCES t_ca(id) on delete CASCADE);

Table created.
[/code]
2、2张表初始化数据
[code]SQL> insert into t_ca values(10001,'Steven');

1 row created.

SQL> insert into t_ca values(10002,'Jobs');

1 row created.

SQL> insert into t_ca_phone values(10001,'15271942915');

1 row created.

SQL> insert into t_ca_phone values(10002,'13367280830');

1 row created.

SQL> commit;

Commit complete.

SQL> select * from t_ca;

ID NAME
---------- ------------------------------
10001 Steven
10002 Jobs

SQL> select * from t_ca_phone;

ID PHONE_NUM
---------- -----------
10001 15271942915
10002 13367280830
[/code]
3、级联删除测试,再查看t_ca_phone表中数据:
[code]SQL> delete from t_ca where ID=10001;

1 row deleted.

SQL> select * from t_ca_phone;

ID PHONE_NUM
---------- -----------
10002 13367280830
[/code]
4、级联截断测试(先rollback到删除之前):
[code]SQL> rollback;

Rollback complete.

SQL> select * from t_ca_phone;

ID PHONE_NUM
---------- -----------
10001 15271942915
10002 13367280830

SQL> truncate table t_ca cascade;

Table truncated.

SQL> select * from t_ca_phone;

no rows selected

SQL> select * from t_ca;

no rows selected

SQL>[/code]
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论