In oracle 12c TRUNCATE TABLE CASCADE will truncate its child tables, if ON DELETE CASCADE relationship is present on child table.
Create one parent and child table with some data
SQL> CREATE TABLE DBATEST ( EMPNO number, NAME varchar2(10) , empid number); Table created. SQL> alter table dbatest add constraint emp_pk primary key ( empid); Table altered. NOT NULL SQL> CREATE TABLE DBACHILD ( EMPID number, dept number); Table created. --- add the delete cascade keyword while adding foreign key constraint SQL> alter table dbachild add constraint child_fk foreign key ( EMPID ) REFERENCES dbatest(EMPID) on delete cascade; Table altered. SQL> insert into dbatest values ( 1,'RAJ',1); 1 row created. SQL> insert into dbatest values ( 1,'RAM',2); 1 row created. SQL> insert into dbatest values ( 1,'RAM',3); 1 row created. SQL> commit; Commit complete. SQL> insert into dbachild values ( 1,2); 1 row created. SQL> insert into dbachild values ( 2,2); 1 row created. SQL> commit; Commit complete. SQL> select count(*) from dbatest; COUNT(*) ---------- 3 SQL> select count(*) from dbachild; COUNT(*) ---------- 2
You can check the child table details using : Get child table details
OWNER CHILD_TABL STATUS FK_COLUMN CONSTRAINT_NAME ---------- ---------- -------- --------------- --------------------------- TEST DBACHILD ENABLED EMPID CHILD_FK
– Truncate the parent table with cascade option:
SQL> truncate table dbatest cascade; Table truncated. SQL> select count(*) from dbatest; COUNT(*) ---------- 0 SQL> select count(*) from dbachild; COUNT(*) ---------- 0
We can see the child table has been truncated, though we just truncated only parent table.