標籤:
在之前的版本中,存在外鍵約束時,無法直接truncate父表。在12C中,對truncate操作添加了級聯操作特性。
前提是建立外鍵約束時,使用了"on delete casacde"。
測試指令碼:
SQL> drop table child;SQL> drop table parent;SQL> create table parent(id number primary key);SQL> create table child(cid number primary key,pid number);SQL> alter table child add constraint fk_parent_child foreign key(pid) references parent(id) on delete cascade;SQL> insert into parent values(1);SQL> insert into parent values(2);SQL> insert into child values(1,1);SQL> insert into child values(2,1);SQL> insert into child values(3,2);SQL> commit;SQL> select a.id,b.cid,b.pid from parent a, child b where a.id=b.pid; ID CID PID---------- ---------- ---------- 1 1 1 1 2 1 2 3 2SQL>
11gR2的測試結果:
SQL> truncate table parent cascade;truncate table parent cascade *ERROR at line 1:ORA-03291: Invalid truncate option - missing STORAGE keywordSQL>
12C的測試結果:
SQL> truncate table parent cascade;Table truncated.SQL>
Oracle 12C -- truncate的級聯操作