Выбрать главу

Столбец Тип Описание

owner VARCHAR2(30) Владелец ограничения.

constraint_name VARCHAR2(30) Имя ограничения.

constraint_type VARCHAR2(1) Тип ограничения. Устанавливается на Р, R, С, U, V или

0 (см. таблицу 10.3, где объясняется, что обозначает

каждый из этих типов ограничений).

table_name VARCHAR2(30) Имя таблицы, для которой определено это ограничение.

status VARCHAR2(8) Статус ограничения. Устанавливается на enabled или

DISABLED.

deferrable VARCHAR2(14) Указывает, является ли ограничение откладываемым.

Устанавливается на deferrable или not deferrable.

deferred VARCHAR2(9) Указывает, является ли ограничение отложенным. Устанавливается

на immediate или на deferrd.

В следующем примере из user_constraint выбираются столбцы constraint,

name, constraint_type, status, deferrable и deferred для таблицы order_status2:

□ SELECT

constraint_name, constraint_type, status, deferrable, deferred

FROM user_constraints

WHERE table_name = '0RDER_STATUS2';

CONSTRAINT_NAME С STATUS DEFERRABLE DEFERRED

ORDER STATUS2 PK P ENABLED NOT DEFERRABLE IMMEDIATE

ORDER STATUS2 STATUS _CK С ENABLED NOT DEFERRABLE IMMEDIATE

ORDER STATUS2 ID CK С ENABLED NOT DEFERRABLE IMMEDIATE

ORDER STATUS2 STATUS NN С DISABLED NOT DEFERRABLE IMMEDIATE

ORDER STATUS2 STATUS _UQ и ENABLED DEFERRABLE DEFERRED

SYS C004807 С ENABLED NOT DEFERRABLE IMMEDIATE

У всех ограничений, кроме одного, есть имя, которое было задано при

добавлении ограничения с помощью оператора ALTER TABLE. У одного ограничения

имя (SYS_C004807) было сгенерировано базой данных. (Поскольку

это имя генерируется автоматически, в вашей базе данных оно будет

другим.) Это то ограничение, для которого я ранее при создании опустил

имя.

324 Глава 10

Совет Всегда указывайте осмысленные имена для ваших ограничений.

Получение информации об ограничениях для столбцов

Информацию об ограничениях для столбцов можно получить, сделав запрос

к представлению user_cons_columns. В таблице 10.5 перечислены некоторые

из столбцов в user_cons_columns.

Примечание Информацию о всех ограничениях для столбцов можно получить, если сделать

запрос к all_cons_columns.

Таблица 10.5. Некоторые столбцы в user_cons_columns

Столбец Тип Описание

owner VARCHAR2(30) Владелец ограничения.

constraint_name VARCHAR2(30) Имя ограничения.

table_name VARCHAR2(30) Имя таблицы, для которой определено это ограничение.

column_name VARCHAR2(4000) Имя столбца, для которого определено ограничение.

В следующем примере из таблицы user_cons_columns выбираются столбцы

constraint_name и column_name для таблицы order_status2 :

COLUMN column_name format a15

SELECT constraint_name, column_name

FROM user_cons_columns

WHERE table_name = ‘0RDER_STATUS2’;

CONSTRAINT NAME COLUMN NAME

0RDER_STATUS2_ID_CK

0RDER_STATUS2_PK

0RDER_STATUS2_STATUS_CK

0RDER_STATUS2_STATUS_NN

0RDER_STATUS2_STATUS_UQ

SYS C004807

ID

ID

STATUS

STATUS

STATUS

LAST MODIFIED

В следующем примере выполняется соединение u s e r_ c o n s tra in ts и

user_cons_columns для получения столбцов column_name, constraint_name,

c o n s tra in t_ ty p e и s ta tu s:

□ SELECT ucc.column_name, ucc.constraint_name, uc.constraint_type, uc.

status

FROM user_constraints uc, user_cons_columns ucc

WHERE uc.table_name = ucc.table_name

AND uc.constraint_name = ucc.constraint_name

AND ucc.table_name = ‘0RDER_STATUS2’

ORDER BY ucc.constraint_name;

Создание таблиц, последовательностей, индексов и представлений 325

COLUMN_NAME CONSTRAINTJIAME С STATUS

ID 0RDER_STATUS2_ID_CK С ENABLED

ID 0RDER_STATUS2_PK P ENABLED

STATUS 0RDER_STATUS2_STATUS_CK С ENABLED

STATUS 0RDER_STATUS2_STATUS_NN С DISABLED

STATUS 0RDER_STATUS2_STATUS_UQ U ENABLED

LAST_MODIFIED SYS_C004807 С ENABLED

Переименование таблицы

Для переименования таблицы используется оператор RENAME. В следующем

примере таблица order_status2 переименовывается в order_state:

□ RENAME o rd e r_ s ta tu s2 ТО o rd e r_ s ta te ;

Примечание Если вы использовали название таблицы в именах ограничений, вам следует

также поменять имена ограничений.

В следующем примере восстанавливается первоначальное имя таблицы:

□ RENAME o rd e r_ s ta te ТО o rder_statu s2 ;

Добавление комментария к таблице

Комментарий может помочь вспомнить, для чего используется эта таблица

или столбец. Для добавления комментария используется оператор

COMMENT. В следующем примере добавляется комментарий к таблице order_

status2:

□ COMMENT ON TABLE o rd e r_ s ta tu s2 IS

‘ o rd e r_ s ta tu s2 s to re s the s ta te o f an o rd e r ’ ;

(в o rd e r_ s ta tu s2 хранится состояние заказа)

Следующий пример добавляет комментарий к столбцу o rd e r_ s ta tu s 2 .la s t_

m o d ifie d :

COMMENT ON COLUMN o r d e r _ s ta tu s 2 .la s t jn o d ifie d IS

' la s t jn o d if ie d s to re s the date and time the ord e r was mod ified la s t ';

(в la s t jn o d if ie d хранится дата и время последнего изменения заказа)

Получение информации из комментариев к таблице

Сделав запрос к представлению user_tab_comments, можно получить информацию

из комментариев:

□ SELECT *

FROM user_tab_comments

WHERE table_name = ‘0RDER_STATUS2’;

TABLE_NAME TABLE_TYPE

COMMENTS

0RDER_STATUS2 TABLE

o rd e r_ s ta tu s2 s to re s the s ta te o f an order

326 Глава 10