Виды ограничений в базе данных
Виды ограничений в базе данных
Существуют следующие виды ограничений в базе данных InterBase:
* первичный ключ - PRIMARY KEY;
* уникальный ключ - UNIQUE KEY;
* внешний ключ - FOREIGN KEY
- может включать автоматические триггеры ON UPDATE и ON DELETE;
* проверки - CHECK.
В предыдущих главах уже упоминались некоторые из этих ограничений, что было необходимо для логичного изложения материала, но теперь мы рассмотрим их синтаксис, применение и реализацию более обстоятельно.
Ограничения базы данных бывают двух типов - на основе одного поля и на основе нескольких полей таблицы. Синтаксис обоих видов ограничений приведен ниже.
<col_constraint> = [CONSTRAINT constraint] <constraint_def>
[ <col_constramt> . . . ]
<constraint_def> = {UNIQUE | PRIMARY KEY
| CHECK ( <search_condition>)
| REFERENCES other_table [( other_col [, other_col ...])]
[ON DELETE (NO ACTION|CASCADE|SET DEFAULT|SET NULL}]
[ON UPDATE (NO ACTION CASCADEjSET DEFAULTjSET NULL}]
}
Для ограничений на основе нескольких полей синтаксис следующий:
<tconstraint> = [CONSTRAINT constraint] <tconstraint_def>
[< tconstraint> ...]
<tconstraint_def> = {{PRIMARY KEY | UNIQUE} ( col [, col ...] )
FOREIGN KEY ( col [, col ...] ) REFERENCES other_table [ ( other_col [ , other_col ...] ) ]
[ON DELETE (NO ACTION|CASCADE SET DEFAULT|SET NULL}] [ON UPDATE {NO ACTION|CASCADE|SET DEFAULT|SET NULL}]
| CHECK ( <search_condition>)}
Разница в синтаксисе между ограничениями на основе одного поля и на основе нескольких очевидна - в последних молено указать несколько полей, которые входя i в ограничение. В сдчае ограничения на основе одного поля все описанные опции относятся только к текущему полю.
Конечно, у этих двух типов ограничений отличается способ их применения: ограничения на основе одного поля просто дописываются к определению нужного поля, а ограничения на основе нескольких полей указываются через запятую в общем определении таблицы. Подробные примеры приведены в следующих разделах этой главы.