Programovanie

Rýchle prezeranie obmedzení databázy Oracle

Keď pracujem s databázou Oracle, stále používam SQL * Plus na mnoho rýchlych a špinavých databázových dotazov. Najmä často vyhľadám obmedzenia v SQL * Plus. V tomto príspevku sa pozriem na pohľady na databázu Oracle a dotazy, ktoré používam najčastejšie, aby som získal predstavu, s akými obmedzeniami sa vyrovnávam.

Našiel som dva najdôležitejšie pohľady na určenie základných obmedzení databázy: ALL_CONSTRAINTS (USER_CONSTRAINTS) a ALL_CONS_COLUMNS (alebo USER_CONS_COLUMNS). V tomto príspevku sa zaoberám niektorými otázkami, ktoré by som rád použil, a ktoré využívajú tieto pohľady z Oracle Data Dictionary.

Zobrazenie ALL_CONSTRAINTS je skvelé na vyhľadanie základných podrobností obmedzenia. Nasledujúci úryvok SQL * Plus to demonštruje pri používaní.

displayConstraintInfo.sql

nastaviť veľkosť riadkov 180 nastaviť overiť vypnúť prijať obmedzenieName prompt "Constraint Name:" SELECT constraint_name, constraint_type, r_constraint_name, table_name, search_condition FROM all_constraints WHERE constraint_name = '& constraintName'; 

Vyššie uvedený úryvok vyzve na zadanie názvu obmedzenia a potom poskytne základné charakteristiky tohto obmedzenia, ktoré poskytuje server ALL_CONSTRAINTS vyhliadka. Jednou z týchto charakteristík je CONSTRAINT_TYPE, čo je jedna z nasledujúcich hodnôt: 'C' (Check Constraint), 'P' (Primary Key), 'R' (Reference / Foreign Key), 'U' (Unique), 'V' (with check option on zobrazenie), „O“ (iba pri zobrazení na čítanie). Vyššie uvedený dopyt vyžaduje, aby človek poznal názov obmedzenia. Nasledujúci dopyt zobrazí podobné informácie o obmedzeniach pre danú tabuľku.

displayConstraintsOnTable.sql

nastaviť veľkosť riadkov 180 nastaviť overiť vypnúť prijať výzvu TableName "Názov tabuľky:" SELECT constraint_name, constraint_type, r_constraint_name, table_name, search_condition FROM all_constraints WHERE table_name = '& tableName'; 

Vyššie uvedený dotaz poskytuje obmedzenia pre danú tabuľku, ale často je užitočné vedieť, ktoré stĺpce konkrétne v tabuľke majú obmedzenia. To sa dá ľahko urobiť pripojením sa k zobrazeniu ALL_CONS_COLUMNS k zobrazeniu ALL_CONSTRAINTS.

displayConstraintsOnTableColumns.sql

nastaviť veľkosť riadkov 180 nastaviť overiť vypnúť prijať príkaz TableName "Názov tabuľky:" SELECT c.constraint_name, c.constraint_type, c.r_constraint_name, c.table_name, cc.column_name, cc.position, c.search_condition Z all_constraints c, all_cons_columns cc WHERE c .table_name = '& tableName' AND c.constraint_name = cc.constraint_name; 

Ďalším užitočným dotazom používajúcim tieto dva pohľady spojené s obmedzeniami je dotaz, ktorý poskytuje informácie o obmedzeniach referenčnej integrity (CONSTRAINT_TYPE z R). Konkrétne tento jednoduchý dotaz zobrazuje obmedzenia pre danú tabuľku, ktoré sú obmedzeniami cudzieho kľúča a od ktorých obmedzení primárneho kľúča závisia.

displayForeignKeyConstraints.sql

nastaviť veľkosť riadkov 180 nastaviť overiť vypnúť prijať príkaz TableName "Názov tabuľky:" SELECT cf.constraint_name "CUDZÍ KĽÚČ", cp.constraint_name "ZÁVISÍ NA", 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; 

V tomto príspevku som zhrnul niektoré užitočné otázky, ktoré je možné zostaviť z pohľadov Oracle Data Dictionary ALL_CONSTRAINTS a ALL_USER_CONS_COLUMNS.

Pôvodný príspevok je k dispozícii na //marxsoftware.blogspot.com/ (inšpirovaný skutočnými udalosťami)

Tento príbeh s názvom „Rýchle zobrazenie obmedzení databázy Oracle“ pôvodne publikoval server JavaWorld.

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