Programmering

Viser raskt Oracle Database Constraints

Når jeg jobber med en Oracle-database, bruker jeg SQL * Plus til mange raske og skitne databasespørsmål. Spesielt ser jeg ofte på begrensninger i SQL * Plus. I dette innlegget ser jeg på Oracle-databasevisninger og spørsmål som jeg bruker mest for å få en ide om hvilke begrensninger jeg har å gjøre med.

Jeg har funnet de to viktigste visningene for å bestemme grunnleggende databasebegrensninger er ALL_CONSTRAINTS (USER_CONSTRAINTS) og ALL_CONS_COLUMNS (eller USER_CONS_COLUMNS). I dette innlegget ser jeg på noen spørsmål jeg liker å bruke som utnytter disse visningene fra Oracle Data Dictionary.

ALL_CONSTRAINTS-visningen er flott for å finne grunnleggende begrensningsdetaljer. Neste SQL * Plus-kodebit viser dette i bruk.

displayConstraintInfo.sql

sett linjestørrelse 180 sett bekreft av godta begrensningsnavn ledetekst "Begrensningsnavn:" VELG begrensningsnavn, begrensningstype, r_begrensningsnavn, tabellnavn, søkestilling FRA alle_begrensninger WHERE constraint_name = '& constraintName'; 

Ovennevnte utdrag vil be om et begrensningsnavn og deretter gi noen grunnleggende egenskaper ved den begrensningen som tilbys av ALL_CONSTRAINTS utsikt. En av disse egenskapene er CONSTRAINT_TYPE, som er en av følgende verdier: 'C' (Kontroller begrensning), 'P' (primærnøkkel), 'R' (referansetall / fremmednøkkel), 'U' (unik), 'V' (med avkrysningsalternativ på en visning), 'O' (med skrivebeskyttet på en visning). Ovenstående spørring krever at man kjenner begrensningsnavnet. Den neste spørringen vil vise lignende informasjon for begrensninger på en gitt tabell.

displayConstraintsOnTable.sql

sett linjestørrelse 180 sett bekreft av aksept tabellnavn ledetekst "Tabellnavn:" SELECT constraint_name, constraint_type, r_constraint_name, table_name, search_condition FROM all_constraints WHERE table_name = '& tableName'; 

Ovennevnte spørring gir begrensningene for en gitt tabell, men det er ofte nyttig å vite hvilke kolonner spesielt på tabellen som har begrensninger. Dette gjøres enkelt ved å bli med i ALL_CONS_COLUMNS-visningen til ALL_CONSTRAINTS-visningen.

displayConstraintsOnTableColumn.sql

sett linjestørrelse 180 sett bekreft av aksept tabellnavn ledetekst "Tabellnavn:" VELG 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 .table_name = '& tabellnavn' OG c.constraint_name = cc.constraint_name; 

Et annet nyttig spørsmål som bruker disse to begrensningsrelaterte visningene, er en som gir informasjon om begrensninger for referanseintegritet (CONSTRAINT_TYPE av R). Spesielt viser denne enkle spørringen begrensningene for en gitt tabell som er begrensninger for utenlandske nøkler og hvilke primære nøkkelbegrensninger de er avhengige av.

displayForeignKeyConstraints.sql

sett linjestørrelse 180 sett bekreft av godta tabellnavn ledetekst "Tabellnavn:" VELG jf. begrensningsnavn "UTENLANDSK Nøkkel", cp.begrensningsnavn "AVHenger PÅ", cp.tabellnavn, ccp.kolonnavn, ccp.posisjon FRA all_begrensninger cp, all_cons_column ccp, all_constraints jf 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; 

I dette innlegget har jeg oppsummert noen av de nyttige spørsmålene man kan konstruere fra Oracle Data Dictionary-visningene ALL_CONSTRAINTS og ALL_USER_CONS_COLUMNS.

Opprinnelig innlegg tilgjengelig på //marxsoftware.blogspot.com/ (Inspirert av faktiske hendelser)

Denne historien, "Quickinging Oracle Database Constraints", ble opprinnelig utgitt av JavaWorld.

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