SQLсервер в Linux -самостоятельное освоение пакета

       

Использование ограничений таблицы



Листинг 7.8. Использование ограничений таблицы

booktown=# CREATE TABLE editions

booktown-# (isbn text,

booktown(# bookjid integer,

booktown(# edition integer,

booktown(# publisherjd integer,

booktownCl publication date.

booktown(# type char,

booktown(# CONSTRAINT pkey PRIMARY KEY (isbn),

booktown(# CONSTRAINT integrity CHECK (bookjd IS NOT NULL

booktown(# AND edition IS NOT NULL).

booktown(# CONSTRAINT book_exists FOREIGN KEY (bookjd)

booktown(# REFERENCES books (id)

booktown(# ON DELETE CASCADE

booktown(# ON UPDATE CASCADE);

NOTICE: CREATE TABLE/PRIMARY KEY will create implicit index 'pkey1 for table

'editions'

NOTICE: CREATE TABLE will create implicit trigger(s) for FOREIGN KEY check(s)

CREATE

Первое ограничение, pkey, относится к типу PRIMARY KEY и устанавливается для таблицы по полю isbn. Оно практически не отличается от ограничения PRIMARY KEY для поля, поскольку список в данном примере состоит всего из одного поля.

Ограничение i ntegri ty гарантирует, что поля book i d и edi ti on не содержат псевдозначения NULL.



Наконец, ограничение book_exists при помощи конструкций FOREIGN KEY и REFERENCES гарантирует, что значение поля book_id встречается в поле id таблицы books. Более того, поскольку в секциях ON DELETE и ON ACTION встречается ключевое слово CASCADE, любые модификации поля ids таблице books приведут к каскадным изменениям записей в таблице editions, а при удалении записей из таблицы books будут удалены соответствующие записи таблицы editions.

Для этих ограничений в базе данных автоматически строится индекс editions_pkey по полю isbn, а также создается триггер. Индекс обеспечивает выполнение ограничения PRIMARY KEY, а триггер относится к ограничению FOREIGN KEY.



Содержание раздела