Действие ограничений ссылочной целостности заключается в следующем: если для записи главной таблицы имеются записи в подчиненной таблице (таблицах), то эту запись нельзя удалить, а также изменить значения столбцов, образующих ключ.
Формат определения ограничения ссылочной целостности
[CONSTRAINT <Имя ограничения >]
FOREIGN KEY (<Список столбцов ключа>)
REFERENCES <Имя главной таблицы> [<Список столбцов ключа главной таблицы >]
При задании ограничений ссылочной целостности первичному или уникальному ключу главной таблицы ставится внешний ключ подчиненной таблицы. Для описания внешнего ключа используется операнд FOREIGN KEY. Список этого операнда задает столбцы, по которым строится внешний ключ. Если внешний ключ используется для установления ограничений ссылочной целостности, то список столбцов этого ключа должен соответствовать списку столбцов ключа главной таблицы.
В операнде REFERENCES должна указываться главная таблица. Описания столбцов первичного или уникального ключа главной таблицы и внешнего ключа подчиненной таблицы должны полностью совпадать.
Все ограничения ссылочной целостности именуются. Имя может быть задано при определении ограничения в операнде CONSTRAINT, и оно не обязательно, например, если для ограничения ссылочной целостности не задано имя, то оно будет создаваться по умолчанию.
Пример задания ограничений ссылочной целостности
CREATE TABLE Store
(S_Code INTEGER NOT NULL PRIMARY KEY,
S_Name VARCHAR(20) NOT NULL,
S_Price FLOAT,
S_Number Float);
CREATE TABLE Cards
(C_Code INTEGER NOT NULL PRIMARY KEY,
C_Code2 INTEGER NOT NULL,
CJYIove VARCHAR(20) NOT NULL,
C_Date DATE,
CONSTRAINT rStoreCards FOREIGN KEY (C_Code2) REFERENCES Store);
Создаются две таблицы Store и Cards, в каждой таблице для первых полей задан первичный ключ. Таблица Cards связывается с таблицей Store, где по полю C_Code2 задано ограничение ссылочной целостности с именем rStoreCards и определен внешний ключ.
При использовании программы IBConsole приведенные операторы нужно вводить и выполнять поочередно или использовать файл сценария.
Аналогично можно определить для таблицы несколько различных ограничений ссылочной целостности.
В приведенном примере ограничения ссылочной целостности для связанных таблиц задаются на уровне таблиц. На программном уровне можно использовать триггеры, которые значительно упрощают весь процесс, например, с их помощью можно реализовать каскадное удаление записей.
Пример удаления ограничения ссылочной целостности
ALTER TABLE <Имя таблицы>
DROP <Имя ограничения ссылочной целостности>;
Так же приведенный код можно скомпилировать и в других программах, к примеру, SQL Explorer.