Programmering

Hurtig visning af Oracle Database-begrænsninger

Når jeg arbejder med en Oracle-database, finder jeg stadig mig selv ved hjælp af SQL * Plus til mange hurtige og beskidte databaseforespørgsler. Især ser jeg ofte begrænsninger op i SQL * Plus. I dette indlæg ser jeg på de Oracle-databasevisninger og -forespørgsler, som jeg bruger mest til at få en idé om, hvilke begrænsninger jeg har at gøre med.

Jeg har fundet de to vigtigste synspunkter til bestemmelse af grundlæggende databasebegrænsninger er ALL_CONSTRAINTS (USER_CONSTRAINTS) og ALL_CONS_COLUMNS (eller USER_CONS_COLUMNS). I dette indlæg ser jeg på nogle forespørgsler, jeg kan lide at bruge, der udnytter disse synspunkter fra Oracle Data Dictionary.

ALL_CONSTRAINTS-visningen er fantastisk til at finde grundlæggende begrænsningsdetaljer. Det næste SQL * Plus-uddrag demonstrerer dette i brug.

displayConstraintInfo.sql

sæt linjestørrelse 180 sæt verificer off accept constraintName prompt "Constraint Name:" VÆLG constraint_name, constraint_type, r_constraint_name, table_name, search_condition FROM all_constraints WHERE constraint_name = '& constraintName'; 

Ovenstående uddrag beder om et begrænsningsnavn og giver derefter nogle grundlæggende karakteristika for den begrænsning, der leveres af ALL_CONSTRAINTS udsigt. En af disse egenskaber er CONSTRAINT_TYPE, som er en af ​​følgende værdier: 'C' (Check Constraint), 'P' (Primary Key), 'R' (Referential / Foreign Key), 'U' (Unique), 'V' (with check option on en visning), 'O' (med skrivebeskyttet på en visning). Ovenstående forespørgsel kræver, at man kender begrænsningsnavnet. Den næste forespørgsel viser lignende oplysninger for begrænsninger i en given tabel.

displayConstraintsOnTable.sql

sæt linjestørrelse 180 sæt verificer off accept tabelnavn-prompt "Tabelnavn:" VÆLG begrænsningsnavn, begrænsningstype, r_konstraintnavn, tabelnavn, søgeforhold FRA alle_begrænsninger HVOR tabelnavn = '& tabelnavn'; 

Ovenstående forespørgsel indeholder begrænsningerne for en given tabel, men det er ofte nyttigt at vide, hvilke kolonner der især er på bordet, der har begrænsninger. Dette gøres let ved at slutte sig til visningen ALL_CONS_COLUMNS til visningen ALL_CONSTRAINTS.

displayConstraintsOnTableColumns.sql

sæt linjestørrelse 180 sæt verificer 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_column cc WHERE c .tabel_name = '& tabelnavn' OG c.constraint_name = cc.constraint_name; 

En anden nyttig forespørgsel ved hjælp af disse to begrænsninger-relaterede visninger er en, der giver information om begrænsninger for referenceintegritet (CONSTRAINT_TYPE af R). Især viser denne enkle forespørgsel begrænsningerne for en given tabel, der er udenlandske nøglebegrænsninger, og hvilke primære nøglebegrænsninger de er afhængige af.

displayForeignKeyConstraints.sql

sæt linjestørrelse 180 sæt verificer off accept tableName prompt "Table Name:" SELECT cf.constraint_name "UDENLANDSK KEY", cp.constraint_name "DEPENDS ON", cp.table_name, ccp.column_name, ccp.position FROM all_constraints cp, all_cons_column ccp, all_constraints jf. HVOR cp.table_name = '& tableName' OG cp.constraint_name = ccp.constraint_name AND cf.r_constraint_name = cp.constraint_name AND cf.r_constraint_name = ccp.constraint_name; 

I dette indlæg har jeg sammenfattet nogle af de nyttige forespørgsler, man kan konstruere ud fra Oracle Data Dictionary-visningerne ALL_CONSTRAINTS og ALL_USER_CONS_COLUMNS.

Oprindelig postering tilgængelig på //marxsoftware.blogspot.com/ (Inspireret af faktiske begivenheder)

Denne historie, "Quickinging Oracle Database Constraints" blev oprindeligt udgivet af JavaWorld.

$config[zx-auto] not found$config[zx-overlay] not found