Бързо преглеждане на ограниченията на базата данни на Oracle

Когато работя с база данни на Oracle, все още използвам SQL * Plus за много бързи и мръсни заявки към база данни. По-специално, често търся ограничения в SQL * Plus. В тази публикация разглеждам изгледите и запитванията на базата данни на Oracle, които използвам най-много, за да добия представа с какви ограничения се занимавам.

Открих, че двата най-важни изгледа за определяне на основните ограничения на базата данни са ALL_CONSTRAINTS (USER_CONSTRAINTS) и ALL_CONS_COLUMNS (или USER_CONS_COLUMNS). В тази публикация разглеждам някои заявки, които обичам да използвам, които се възползват от тези изгледи от речника на Oracle Data.

Изгледът ALL_CONSTRAINTS е чудесен за намиране на подробности за основните ограничения. Следващият фрагмент на SQL * Plus демонстрира това в употреба.

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

Горният фрагмент ще поиска име на ограничение и след това ще предостави някои основни характеристики на това ограничение, предоставени от ALL_CONSTRAINTSизгледа. Една от тези характеристики е CONSTRAINT_TYPE, която е една от следните стойности: 'C' (Check Constraint), 'P' (Primary Key), 'R' (Referencial / Foreign Key), 'U' (Unique), 'V' (с опция за проверка на изглед), „O“ (с само четене на изглед). Горната заявка изисква човек да знае името на ограничението. Следващата заявка ще покаже подобна информация за ограничения в дадена таблица.

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

Горната заявка предоставя ограничения за дадена таблица, но често е полезно да се знае кои колони по-специално в таблицата имат ограничения. Това става лесно, като се присъедините към изгледа ALL_CONS_COLUMNS към изгледа 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; 

Друга полезна заявка, използваща тези два изгледа, свързани с ограничения, е тази, която предоставя информация за референтни ограничения CONSTRAINT_TYPEна целостта ( на R). По-специално, тази проста заявка показва ограниченията за дадена таблица, които са ограничения на външния ключ и от кои ограничения на първичния ключ зависят.

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; 

В тази публикация обобщих някои полезни заявки, които човек може да изгради от изгледите на речника на данни на Oracle ALL_CONSTRAINTSи ALL_USER_CONS_COLUMNS.

Оригинално публикуване на разположение на //marxsoftware.blogspot.com/ (вдъхновено от действителни събития)

Тази история „Бърз преглед на ограниченията на базата данни на Oracle“ първоначално е публикувана от JavaWorld.