在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]
先来看看级联删除,比如员工离职要从公司信息中删除某个员工的信息,而员工的信息再多个表中存在,此时就可以用级联删除,集删除一个表的中数据,其他表中的这个员工的数据都会级联删除
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进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。




