• PRIMARY KEY. Автоматически устанавливает ограничения UNIQUE
и NOT NULL, а для заданного поля создается индекс. В
таблице может
устанавливаться только одно ограничение первичного ключа.
• DEFAULT значение. Пропущенные значения поля заменяются
заданной величиной. Значение по умолчанию должно относиться к типу
данных, соответствующему типу поля. В PostgreSQL 7.1.х значение по
умолчанию не может задаваться при помощи подзапроса.
• CHECK условие. Команда INSERT или UPDATE для записи
завершается успешно лишь при выполнении заданного условия (выражения,
возвращающего логический результат). При установке ограничения поля в
секции CHECK может использоваться только поле, для которого
устанавливается ограничение.
• REFERENCES. Это ограничение состоит из нескольких секций,
которые перечислены ниже.
о REFERENCES таблица [ ( поле ) ]. Входные значения
ограничиваемого поля сравниваются со значениями другого поля в
заданной таблице. Если совпадения отсутствуют, команда INSERT или
UPDATE завершается неудачей. Если параметр поле не указан,
проверка выполняется по первичному ключу. Ограничение
REFERENCES похоже на ограничение таблицы FOREIGN KEY,
описанное в
следующем пункте этого подраздела. Действительно,
между этими ограничениями есть много общего.
о ON DELETE операция. При выполнении команды DELETE для
заданной таблицы с ограничиваемым полем выполняется одна из
следующих операций: NО ACTION (если удаление приводит к
нарушению целостности ссылок, происходит ошибка; используется по
умолчанию, если операция не указана), RESTRICT (аналогично NО
ACTION), CASCADE (удаление всех записей, содержащих ссылки на
удаляемую запись), SET NULL (поля, содержащие ссылки на
удаляемую запись, заменяются псевдозначениями NULL), SET
DEFAULT (полям, содержащим ссылки на удаляемую запись,
присваивается значение по умолчанию).
о ON UPDATE операция. При выполнении команды UPDATE для
заданной таблицы выполняется одна из операций, описанных выше. По
умолчанию используется значение NО ACTION. Если выбрана
операция CASCADE, все записи, содержащие ссылки на обновляемую
запись, обновляются новым значением (вместо удаления, как в случае с
ON DELETE CASCADE).
В
ограничениях таблиц, в отличие от ограничений полей, могут
участвовать сразу несколько полей таблицы. Синтаксис ограничения
таблицы:
[ CONSTRAINT ограничение ]
{ UNIQUE ( поле [....]) |
PRIMARY KEY ( поле [. ...] ) |
CHECK ( условие ) |
FOREIGN KEY ( поле [. ... ] )
REFERENCES таблица [ ( поле [. ] ) ]
[ MATCH FULL | MATCH PARTIAL ]
[ ON DELETE операция ]
[ ON UPDATE операция ]
[ DEFERRABLE | NOT DEFERRABLE ]
[ INITIALLY DEFERRED | INITIALLY IMMEDIATE ]
Секция CONSTRAINT ограничение определяет необязательное имя.
Ограничениям рекомендуется присваивать содержательные имена вместо
автоматически сгенерированных имен, не несущих никакой полезной
информации. В
будущем имя также может пригодиться и для удаления
ограничения.
В примере 6.2 первое ограничение, pkey, относится к типу PRIMARY
KEY и устанавливается для таблицы по полю isbn. Оно практически не
отличается от ограничения PRIMARY KEY для поля, поскольку список в
данном примере состоит всего из одного поля.
Достарыңызбен бөлісу: