当前位置:  数据库>oracle

Oracle 12C TRUNCATE TABLE CASCADE

    来源: 互联网  发布时间:2017-06-20

    本文导语: 在Oracle 12c中提供了 TRUNCATE TABLE  CASCADE语句,是为了表在有主外键关系时,清除主表时,关联删除。下面我们演示一下。 1.测试表的准备SQL> CREATE TABLE t1 (  2  id          NUMBER,  3  description  VARCHAR2(50),  4    CONSTRAINT t1_pk PR...

在Oracle 12c中提供了 TRUNCATE TABLE  CASCADE语句,是为了表在有主外键关系时,清除主表时,关联删除。下面我们演示一下。

1.测试表的准备
SQL> CREATE TABLE t1 (
  2  id          NUMBER,
  3  description  VARCHAR2(50),
  4    CONSTRAINT t1_pk PRIMARY KEY (id)
)  5  ;


Table created.


SQL> CREATE TABLE t2 (
  2  id            NUMBER,
  3  t1_id          NUMBER,
  4    description    VARCHAR2(50),
  5    CONSTRAINT t2_pk PRIMARY KEY (id),
    6  CONSTRAINT t2_t1_fk FOREIGN KEY (t1_id) REFERENCES t1 (id) ON DELETE CASCADE
  7  );


Table created.


SQL> CREATE TABLE t3 (
  2  id            NUMBER,
  3    t2_id          NUMBER,
  4    description    VARCHAR2(50),
  5  CONSTRAINT t3_pk PRIMARY KEY (id),
  6    CONSTRAINT t3_t2_fk FOREIGN KEY (t2_id) REFERENCES t2 (id) ON DELETE CASCADE
  7  );


Table created.


SQL> INSERT INTO t1 VALUES (1, 't1 ONE');


1 row created.


SQL> INSERT INTO t2 VALUES (1, 1, 't2 ONE');


1 row created.


SQL> INSERT INTO t2 VALUES (2, NULL, 't2 TWO');


1 row created.


SQL> INSERT INTO t3 VALUES (1, 1, 't3 ONE');


1 row created.


SQL> INSERT INTO t3 VALUES (2, NULL, 't3 TWO');


1 row created.


SQL> COMMIT;


Commit complete.


SQL> SELECT (SELECT COUNT(*) FROM t1) AS t1_count,
  2        (SELECT COUNT(*) FROM t2) AS t2_count,
  3        (SELECT COUNT(*) FROM t3) AS t3_count
FR  4  OM  dual;


  T1_COUNT  T2_COUNT  T3_COUNT
---------- ---------- ----------
        1          2          2

 2.我们使用DELETE CASCADE测试一下
SQL> DELETE FROM t1 CASCADE;


 1 row deleted.


 SQL> SELECT (SELECT COUNT(*) FROM t1) AS t1_count,
    2        (SELECT COUNT(*) FROM t2) AS t2_count,
    3        (SELECT COUNT(*) FROM t3) AS t3_count
  4  FROM  dual;


  T1_COUNT  T2_COUNT  T3_COUNT
 ---------- ---------- ----------
          1          2          2
 SQL> ROLLBACK;


 Rollback complete.


 SQL> SELECT (SELECT COUNT(*) FROM t1) AS t1_count,
    2        (SELECT COUNT(*) FROM t2) AS t2_count,
  3        (SELECT COUNT(*) FROM t3) AS t3_count
  4  FROM  dual;


  T1_COUNT  T2_COUNT  T3_COUNT
 ---------- ---------- ----------
          1          2          2

 3.使用TRUNCATE CASCADE

 SQL> TRUNCATE TABLE t1;
 TRUNCATE TABLE t1
                *
 ERROR at line 1:
 ORA-02266: unique/primary keys in table referenced by enabled foreign keys

可以看到直接TRUNCATE Oracle会给出有关联关系的错误。

SQL> TRUNCATE TABLE t1 CASCADE;

 Table truncated.

 SQL> SELECT (SELECT COUNT(*) FROM t1) AS t1_count,
    2        (SELECT COUNT(*) FROM t2) AS t2_count,
    3        (SELECT COUNT(*) FROM t3) AS t3_count
 FR  4  OM  dual;


  T1_COUNT  T2_COUNT  T3_COUNT
 ---------- ---------- ----------
          0          0          0
使用CASCADE就可以极联删除。


    
 
 
 
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • oracle drop table(表)数据恢复方法
  • Oracle Table Demo语句应用介绍
  • 使用Oracle Partition Table对日志表进行分区
  • Oracle 12c发布简单介绍及官方下载地址
  • 在linux下安装oracle,如何设置让oracle自动启动!也就是让oracle那个服务自动启动,不是手动的
  • oracle 11g最新版官方下载地址
  • 请问su oracle 和su - oracle有什么不同?
  • Oracle 数据库(oracle Database)Select 多表关联查询方式
  • 虚拟机装Oracle R12与Oracle10g
  • Oracle数据库(Oracle Database)体系结构及基本组成介绍
  • Oracle 数据库开发工具 Oracle SQL Developer
  • 如何设置让Oracle SQL Developer显示的时间包含时分秒
  • Oracle EBS R12 支持 Oracle Database 11g
  • Oracle 10g和Oracle 11g网格技术介绍
  • SCO unix下安装oracle,但没有光盘,请大家推荐一个oracle下载站点(unix版本的)。谢谢!!!!
  • oracle中如何把表中具有相同值列的多行数据合并成一行
  • 请问大家用oracle数据库, 用import oracle.*;下的东西么? 还是用标准库?
  • Oracle 数据库(oracle Database)性能调优技术详解
  • Linux /$ORACLE_HOME $ORACLE_HOME
  • ORACLE日期相关操作
  • Linux系统下Oracle的启动与Oracle监听的启动
  • ORACLE数据库常用字段数据类型介绍
  • 请问在solaris下安装ORACLE,用root用户和用oracle用户安装有什么区别么?
  • Oracle 12c的九大最新技术特性介绍
  • 网间Oracle的连接,远程连接Oracle服务器??


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3