Oracle
 sql >> база данни >  >> RDS >> Oracle

Деактивирайте всички ограничения на таблицата в Oracle

По-добре е да избягвате записването на временни буферни файлове. Използвайте PL/SQL блок. Можете да стартирате това от SQL*Plus или да поставите това нещо в пакет или процедура. Присъединяването към USER_TABLES е налице, за да се избегнат ограниченията за изглед.

Малко вероятно е наистина да искате да деактивирате всички ограничения (включително NOT NULL, първични ключове и т.н.). Трябва да помислите за поставянето на constraint_type в клаузата WHERE.

BEGIN
  FOR c IN
  (SELECT c.owner, c.table_name, c.constraint_name
   FROM user_constraints c, user_tables t
   WHERE c.table_name = t.table_name
   AND c.status = 'ENABLED'
   AND NOT (t.iot_type IS NOT NULL AND c.constraint_type = 'P')
   ORDER BY c.constraint_type DESC)
  LOOP
    dbms_utility.exec_ddl_statement('alter table "' || c.owner || '"."' || c.table_name || '" disable constraint ' || c.constraint_name);
  END LOOP;
END;
/

Разрешаването на ограниченията отново е малко трик - трябва да активирате ограниченията на първичния ключ, преди да можете да ги препратите в ограничение за външен ключ. Това може да стане с помощта на ORDER BY на constraint_type. 'P' =първичен ключ, 'R' =външен ключ.

BEGIN
  FOR c IN
  (SELECT c.owner, c.table_name, c.constraint_name
   FROM user_constraints c, user_tables t
   WHERE c.table_name = t.table_name
   AND c.status = 'DISABLED'
   ORDER BY c.constraint_type)
  LOOP
    dbms_utility.exec_ddl_statement('alter table "' || c.owner || '"."' || c.table_name || '" enable constraint ' || c.constraint_name);
  END LOOP;
END;
/


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Вмъкнете, ако не съществува Oracle

  2. SSIS не успява да запази пакетите и рестартира Visual Studio

  3. cx Oracle ImportError

  4. Предоставяне на избор на всички таблици, собственост на конкретен потребител

  5. Примери за PLSQL курсори - явни, неявни и референтни курсори