Столбец Тип Описание
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