Определение внешних ключей
Внешние ключи используются для организации связей между таблицами базы данных (родительскими и дочерними) и для поддержания ограничений ссылочной целостности данных. В СУБД SYBASE SQL Anywhere ссылочная целостность проверяется при:
- удаление записей родительской таблицы;
- модификация значений полей родительской таблицы, на которые ссылаются поля внешнего ключа дочерней таблицы.
Основная цель ссылочной целостности заключается в недопустимости наличия "висячих" ссылок из дочерних таблиц на родительскую таблицу.
Для проверки действия механизма внешних ключей перепишем содержимое таблиц Books и Copies в одноименные таблицы базы данных Dubl_Biblia. Такая возможность довольно просто реализуется в утилите ISQL. Для решения поставленной задачи необходимо в среде этой утилиты установить соединение с и произвести экспорт содержимого таблиц в текстовые файлы. Это могут сделать владельцы таблиц, пользователи, имеющие привилегию SELECT () для этих таблиц, и администратор базы данных.
Экспорт в данном случае реализуется следующими операторами:
/* Экспорт в текстовые файлы каталога C:\temp содержимого таблиц Books и Copies */ UNLOAD TABLE Stepanov.Books TO 'c:\temp\books.txt'; UNLOAD TABLE Stepanov.Copies TO 'c:\temp\copies.txt'
После этого следует опять же в утилите ISQL подключиться к базе данных Dubl_Biblia. При этом отсоединение от произойдет автоматически. Теперь требуется выполнить операторы, осуществляются импорт данных:
/* Импорт из текстовых файлов содержимого таблиц Books и Copies */ LOAD TABLE Stepanov.Copies FROM 'c:\temp\copies.txt'; LOAD TABLE Stepanov.Books FROM 'c:\temp\books.txt'
Выполнять операторы LOAD имеют право владельцы таблиц, пользователи, имеющие привилегию INSERT () для этих таблиц, и администратор базы данных.
Для проверки результатов копирования достаточно просмотреть содержимое таблиц при помощи оператора SELECT ().
Внешние ключи могут создавать:
- пользователи - владельцы родительской и дочерней таблиц;
- пользователи с полномочиями ALTER () для дочерней и REFERENCES () - для родительской таблиц;
- администратор базы данных.
8844