Melihat Batasan Database Oracle dengan Cepat

Ketika saya bekerja dengan database Oracle, saya masih menggunakan SQL * Plus untuk banyak query database yang cepat dan kotor. Secara khusus, saya sering mencari kendala di SQL * Plus. Dalam posting ini, saya melihat tampilan database Oracle dan kueri yang paling sering saya gunakan untuk mendapatkan gambaran tentang kendala apa yang saya hadapi.

Saya telah menemukan dua tampilan paling penting untuk menentukan batasan database dasar adalah ALL_CONSTRAINTS (USER_CONSTRAINTS) dan ALL_CONS_COLUMNS (atau USER_CONS_COLUMNS). Dalam posting ini, saya melihat beberapa pertanyaan yang saya suka gunakan yang memanfaatkan pandangan ini dari Oracle Data Dictionary.

Tampilan ALL_CONSTRAINTS sangat bagus untuk menemukan detail batasan dasar. Cuplikan SQL * Plus berikutnya mendemonstrasikan penggunaan ini.

displayConstraintInfo.sql

set linesize 180 set verify off accept constraintName prompt "Constraint Name: " SELECT constraint_name, constraint_type, r_constraint_name, table_name, search_condition FROM all_constraints WHERE constraint_name = '&constraintName'; 

Cuplikan di atas akan meminta nama batasan dan kemudian memberikan beberapa karakteristik dasar dari batasan yang disediakan oleh ALL_CONSTRAINTStampilan. Salah satu karakteristik ini adalah CONSTRAINT_TYPE, yang merupakan salah satu dari nilai berikut: 'C' (Periksa Batasan), 'P' (Kunci Primer), 'R' (Referensiensial / Kunci Asing), 'U' (Unik), 'V' (dengan opsi centang pada tampilan), 'O' (dengan hanya baca pada tampilan). Kueri di atas mengharuskan seseorang mengetahui nama kendala. Kueri berikutnya akan menampilkan informasi serupa untuk batasan pada tabel tertentu.

displayConstraintsOnTable.sql

set linesize 180 set verify off accept tableName prompt "Table Name: " SELECT constraint_name, constraint_type, r_constraint_name, table_name, search_condition FROM all_constraints WHERE table_name = '&tableName'; 

Kueri di atas memberikan batasan pada tabel tertentu, tetapi seringkali berguna untuk mengetahui kolom mana yang memiliki batasan. Ini mudah dilakukan dengan bergabung dalam tampilan ALL_CONS_COLUMNS ke tampilan ALL_CONSTRAINTS.

displayConstraintsOnTableColumns.sql

set linesize 180 set verify off accept tableName prompt "Table Name: " SELECT c.constraint_name, c.constraint_type, c.r_constraint_name, c.table_name, cc.column_name, cc.position, c.search_condition FROM all_constraints c, all_cons_columns cc WHERE c.table_name = '&tableName' AND c.constraint_name = cc.constraint_name; 

Kueri berguna lainnya yang menggunakan dua tampilan terkait batasan ini adalah kueri yang memberikan informasi tentang batasan integritas referensial ( CONSTRAINT_TYPEdari R). Secara khusus, kueri sederhana ini menunjukkan batasan untuk tabel tertentu yang merupakan batasan kunci asing dan batasan kunci utama mana yang mereka andalkan.

displayForeignKeyConstraints.sql

set linesize 180 set verify off accept tableName prompt "Table Name: " SELECT cf.constraint_name "FOREIGN KEY", cp.constraint_name "DEPENDS ON", cp.table_name, ccp.column_name, ccp.position FROM all_constraints cp, all_cons_columns ccp, all_constraints cf WHERE cp.table_name = '&tableName' AND cp.constraint_name = ccp.constraint_name AND cf.r_constraint_name = cp.constraint_name AND cf.r_constraint_name = ccp.constraint_name; 

Dalam posting ini saya telah merangkum beberapa kueri berguna yang dapat dibangun dari tampilan Oracle Data Dictionary ALL_CONSTRAINTSdan ALL_USER_CONS_COLUMNS.

Pengeposan asli tersedia di //marxsoftware.blogspot.com/ (Terinspirasi oleh Acara Aktual)

Artikel ini, "Quickly Viewing Oracle Database Constraints" awalnya diterbitkan oleh JavaWorld.