Melihat Kekangan Pangkalan Data Oracle dengan pantas

Semasa saya bekerja dengan pangkalan data Oracle, saya masih menggunakan SQL * Plus untuk banyak pertanyaan pangkalan data yang cepat dan kotor. Secara khusus, saya sering melihat kekangan dalam SQL * Plus. Dalam catatan ini, saya melihat paparan dan pertanyaan pangkalan data Oracle yang paling sering saya gunakan untuk mendapatkan idea apa kekangan yang saya hadapi.

Saya telah menemui dua pandangan paling penting untuk menentukan kekangan pangkalan data asas ialah ALL_CONSTRAINTS (USER_CONSTRAINTS) dan ALL_CONS_COLUMNS (atau USER_CONS_COLUMNS). Dalam catatan ini, saya melihat beberapa pertanyaan yang ingin saya gunakan yang memanfaatkan paparan ini dari Oracle Data Dictionary.

Paparan ALL_CONSTRAINTS sangat bagus untuk mencari butiran kekangan asas. Coretan SQL * Plus seterusnya menunjukkan ini digunakan.

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'; 

Coretan di atas akan meminta nama kekangan dan kemudian memberikan beberapa ciri asas kekangan yang diberikan oleh ALL_CONSTRAINTSpandangan. Salah satu ciri ini adalah CONSTRAINT_TYPE, yang merupakan salah satu nilai berikut: 'C' (Cek Kekangan), 'P' (Kunci Utama), 'R' (Kunci Rujukan / Asing), 'U' (Unik), 'V' (dengan pilihan semak pada pandangan), 'O' (dengan baca sahaja pada pandangan) Pertanyaan di atas menghendaki seseorang mengetahui nama kekangan. Pertanyaan seterusnya akan menunjukkan maklumat yang serupa untuk kekangan pada jadual yang diberikan.

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'; 

Pertanyaan di atas memberikan batasan pada jadual tertentu, tetapi selalunya berguna untuk mengetahui lajur mana yang khususnya di atas meja mempunyai batasan. Ini dapat dilakukan dengan mudah dengan menggabungkan paparan ALL_CONS_COLUMNS ke paparan 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; 

Pertanyaan lain yang berguna menggunakan dua pandangan berkaitan kekangan ini adalah yang memberikan maklumat mengenai kekangan integriti rujukan ( CONSTRAINT_TYPEof R). Khususnya, pertanyaan sederhana ini menunjukkan kekangan untuk jadual tertentu yang merupakan kekangan kunci asing dan kekangan utama utama yang mereka bergantung.

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 catatan ini saya telah meringkaskan beberapa pertanyaan berguna yang dapat dibuat oleh paparan Kamus Data Oracle ALL_CONSTRAINTSdan ALL_USER_CONS_COLUMNS.

Pengeposan asal boleh didapati di //marxsoftware.blogspot.com/ (Diilhamkan oleh Peristiwa Sebenar)

Kisah ini, "Melihat Dengan Cepat Kekangan Pangkalan Data Oracle" pada awalnya diterbitkan oleh JavaWorld.