Schnelles Anzeigen von Oracle-Datenbankbeschränkungen

Wenn ich mit einer Oracle-Datenbank arbeite, verwende ich immer noch SQL * Plus für viele schnelle und schmutzige Datenbankabfragen. Insbesondere suche ich häufig nach Einschränkungen in SQL * Plus. In diesem Beitrag beschäftige ich mich mit den Oracle-Datenbankansichten und -Abfragen, die ich am häufigsten verwende, um eine Vorstellung davon zu bekommen, mit welchen Einschränkungen ich zu tun habe.

Ich habe festgestellt, dass die beiden wichtigsten Ansichten zum Bestimmen grundlegender Datenbankbeschränkungen ALL_CONSTRAINTS (USER_CONSTRAINTS) und ALL_CONS_COLUMNS (oder USER_CONS_COLUMNS) sind. In diesem Beitrag beschäftige ich mich mit einigen Abfragen, die ich gerne verwende und die diese Ansichten aus dem Oracle Data Dictionary nutzen.

Die ALL_CONSTRAINTS-Ansicht eignet sich hervorragend zum Auffinden grundlegender Einschränkungsdetails. Das nächste SQL * Plus-Snippet demonstriert dies in der Verwendung.

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

Das obige Snippet fordert zur Eingabe eines Einschränkungsnamens auf und stellt dann einige grundlegende Merkmale dieser Einschränkung bereit, die von der ALL_CONSTRAINTSAnsicht bereitgestellt werden . Eine dieser Eigenschaften ist CONSTRAINT_TYPEeiner der folgenden Werte: 'C' (Check Constraint), 'P' (Primärschlüssel), 'R' (Referenz- / Fremdschlüssel), 'U' (eindeutig), 'V' (mit Kontrolloption für eine Ansicht), 'O' (mit schreibgeschützt für eine Ansicht). Für die obige Abfrage muss der Name der Einschränkung bekannt sein. Die nächste Abfrage zeigt ähnliche Informationen für Einschränkungen für eine bestimmte Tabelle.

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

Die obige Abfrage enthält die Einschränkungen für eine bestimmte Tabelle. Es ist jedoch häufig hilfreich zu wissen, für welche Spalten in der Tabelle bestimmte Einschränkungen gelten. Dies ist einfach möglich, indem Sie die Ansicht ALL_CONS_COLUMNS mit der Ansicht ALL_CONSTRAINTS verbinden.

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; 

Eine weitere nützliche Abfrage, die diese beiden einschränkungsbezogenen Ansichten verwendet, enthält Informationen zu referenziellen Integritätsbeschränkungen ( CONSTRAINT_TYPEvon R). Diese einfache Abfrage zeigt insbesondere die Einschränkungen für eine bestimmte Tabelle an, bei denen es sich um Fremdschlüsseleinschränkungen handelt und von denen die Primärschlüsseleinschränkungen abhängen.

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; 

In diesem Beitrag habe ich einige nützliche Abfragen zusammengefasst, die aus den Oracle Data Dictionary-Ansichten ALL_CONSTRAINTSund erstellt werden können ALL_USER_CONS_COLUMNS.

Originalbeitrag verfügbar unter //marxsoftware.blogspot.com/ (Inspiriert von tatsächlichen Ereignissen)

Diese Geschichte "Schnelles Anzeigen von Oracle-Datenbankbeschränkungen" wurde ursprünglich von JavaWorld veröffentlicht.