Brzi pregled ograničenja Oracle baze podataka

Kada radim s Oracle bazom podataka, i dalje se koristim SQL * Plusom za mnoge brze i prljave upite baze podataka. Konkretno, često tražim ograničenja u SQL * Plus. U ovom postu gledam na poglede i upite Oracle baze podataka koje najčešće koristim da bih stekao ideju s kojim se ograničenjima bavim.

Pronašao sam da su dva najvažnija prikaza za određivanje osnovnih ograničenja baze podataka ALL_CONSTRAINTS (USER_CONSTRAINTS) i ALL_CONS_COLUMNS (ili USER_CONS_COLUMNS). U ovom postu pregledam neke upite koje volim koristiti i koji koriste prednosti ovih pogleda iz Oracle Data Dictionary-a.

Pogled ALL_CONSTRAINTS izvrstan je za pronalaženje osnovnih detalja ograničenja. Sljedeći isječak SQL * Plus pokazuje to u upotrebi.

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

Gornji isječak zatražit će ime ograničenja, a zatim pružiti neke temeljne karakteristike tog ograničenja koje pruža ALL_CONSTRAINTSpogled. Jedna od ovih karakteristika je CONSTRAINT_TYPE, što je jedna od sljedećih vrijednosti: 'C' (Provjeri ograničenje), 'P' (Primarni ključ), 'R' (Referentni / strani ključ), 'U' (Jedinstveni), 'V' (s opcijom provjere na prikazu), 'O' (s samo čitanjem na prikazu). Gornji upit zahtijeva da se zna naziv ograničenja. Sljedeći upit prikazat će slične informacije za ograničenja na datoj tablici.

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

Gornji upit pruža ograničenja na zadanu tablicu, ali često je korisno znati koji stupci posebno na tablici imaju ograničenja. To se lako postiže pridruživanjem pogleda ALL_CONS_COLUMNS pogledu 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; 

Još jedan koristan upit koji koristi ova dva pogleda povezana s ograničenjima jest onaj koji pruža informacije o referentnim ograničenjima integriteta ( CONSTRAINT_TYPEof R). Ovaj jednostavni upit posebno prikazuje ograničenja za određenu tablicu koja su ograničenja stranog ključa i o kojima ovise primarni ključ.

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; 

U ovom sam postu sažeo neke korisne upite koje možemo izgraditi iz pogleda Oracle Data Dictionary ALL_CONSTRAINTSi ALL_USER_CONS_COLUMNS.

Izvorno objavljivanje dostupno na //marxsoftware.blogspot.com/ (Inspirirano Stvarnim događajima)

Ovu je priču "Brzi pregled ograničenja Oracle baze podataka" izvorno objavio JavaWorld.