Oracle
 sql >> Teknologi Basis Data >  >> RDS >> Oracle

Nonaktifkan semua batasan tabel di Oracle

Lebih baik untuk menghindari menulis file spool sementara. Gunakan blok PL/SQL. Anda dapat menjalankan ini dari SQL*Plus atau memasukkannya ke dalam paket atau prosedur. Gabung ke USER_TABLES ada untuk menghindari batasan tampilan.

Sepertinya Anda tidak benar-benar ingin menonaktifkan semua batasan (termasuk NOT NULL, kunci utama, dll). Anda harus mempertimbangkan untuk menempatkan constraint_type dalam klausa 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;
/

Mengaktifkan batasan lagi sedikit rumit - Anda harus mengaktifkan batasan kunci utama sebelum Anda dapat mereferensikannya dalam batasan kunci asing. Ini dapat dilakukan dengan menggunakan ORDER BY pada constraint_type. 'P' =kunci utama, 'R' =kunci asing.

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. Bagaimana cara mengganti nilai tertentu di kolom database Oracle?

  2. Tutorial Oracle sql:Pernyataan Sql Dasar

  3. Mengapa saya sepertinya tidak bisa memaksa Oracle 11g untuk mengkonsumsi lebih banyak CPU untuk satu kueri SQL?

  4. Bagaimana mengintegrasikan Oracle dan Kafka

  5. Oracle:Permintaan SQL yang mengembalikan baris hanya dengan nilai numerik