{"id":991,"date":"2011-01-19T19:29:30","date_gmt":"2011-01-20T00:29:30","guid":{"rendered":"http:\/\/appcrawler.com\/wordpress\/?p=991"},"modified":"2011-07-06T10:10:09","modified_gmt":"2011-07-06T15:10:09","slug":"handling-constraints-when-truncating-a-table","status":"publish","type":"post","link":"http:\/\/appcrawler.com\/wordpress\/2011\/01\/19\/handling-constraints-when-truncating-a-table\/","title":{"rendered":"Handling constraints when truncating a table"},"content":{"rendered":"<p>Oracle doesn&#8217;t supply a TRUNCATE TABLE TABLE_NAME CASCADE CONSTRAINTS syntax structure as it does when dropping a table.<\/p>\n<p>The anonymous block below will truncate all tables in the current schema and handle the constraints violations (foreign keys) that may be violated based on the order in which the tables are truncated.<\/p>\n<p>DANGER!  Please ensure you are in the correct schema before running what is below.<\/p>\n<pre lang=\"plsql\" line=\"1\">\r\ndeclare\r\n  type vtab is table of varchar2(30);\r\n  l_enabled_constraints vtab := vtab();\r\n  l_enabled_constraint_tabs vtab := vtab();\r\n  i number := 0;\r\n  j number := 0;\r\nbegin\r\n  for cur in (select table_name,constraint_name \r\n                from user_constraints \r\n                where status = 'ENABLED' \r\n                  and constraint_type = 'R') loop\r\n    i := i + 1;\r\n    l_enabled_constraints.extend(1);\r\n    l_enabled_constraint_tabs.extend(1);\r\n    l_enabled_constraint_tabs(i) := cur.table_name;\r\n    l_enabled_constraints(i) := cur.constraint_name;\r\n  end loop;\r\n  while j < i loop\r\n    j := j + 1;\r\n    execute immediate 'alter table ' || l_enabled_constraint_tabs(j) || ' disable constraint ' || l_enabled_constraints(j);\r\n  end loop;\r\n  for cur in (select table_name from user_tables) loop\r\n    begin\r\n      execute immediate 'truncate table ' || cur.table_name;\r\n    exception\r\n      when others then\r\n        dbms_output.put_line(cur.table_name || ' ' || sqlerrm);\r\n    end;\r\n  end loop;\r\n  j := 0;\r\n  while j < i loop\r\n    j := j + 1;\r\n    execute immediate 'alter table ' || l_enabled_constraint_tabs(j) || ' enable constraint ' || l_enabled_constraints(j);\r\n  end loop;\r\nend;\r\n\/\r\n<\/pre>\n<p>After the tables have been truncated, only the constraints that were disabled are re-enabled.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Oracle doesn&#8217;t supply a TRUNCATE TABLE TABLE_NAME CASCADE CONSTRAINTS syntax structure as it does when dropping a table. The anonymous block below will truncate all tables in the current schema and handle the constraints violations (foreign keys) that may be&hellip;<\/p>\n<p class=\"more-link-p\"><a class=\"more-link\" href=\"http:\/\/appcrawler.com\/wordpress\/2011\/01\/19\/handling-constraints-when-truncating-a-table\/\">Read more &rarr;<\/a><\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_mi_skip_tracking":false,"footnotes":""},"categories":[19,22],"tags":[],"_links":{"self":[{"href":"http:\/\/appcrawler.com\/wordpress\/wp-json\/wp\/v2\/posts\/991"}],"collection":[{"href":"http:\/\/appcrawler.com\/wordpress\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/appcrawler.com\/wordpress\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/appcrawler.com\/wordpress\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"http:\/\/appcrawler.com\/wordpress\/wp-json\/wp\/v2\/comments?post=991"}],"version-history":[{"count":10,"href":"http:\/\/appcrawler.com\/wordpress\/wp-json\/wp\/v2\/posts\/991\/revisions"}],"predecessor-version":[{"id":1329,"href":"http:\/\/appcrawler.com\/wordpress\/wp-json\/wp\/v2\/posts\/991\/revisions\/1329"}],"wp:attachment":[{"href":"http:\/\/appcrawler.com\/wordpress\/wp-json\/wp\/v2\/media?parent=991"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/appcrawler.com\/wordpress\/wp-json\/wp\/v2\/categories?post=991"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/appcrawler.com\/wordpress\/wp-json\/wp\/v2\/tags?post=991"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}