Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лекция 10 РБД.docx
Скачиваний:
2
Добавлен:
01.03.2025
Размер:
32.15 Кб
Скачать

Замечание

Для таблиц не должны действовать ограничения ссылочной целостности, заданные на физическом уровне, например, так:

CONSTRAINT rStoreCards

FOREIGN KEY (C_Code2) REFERENCES Store

В противном случае при попытке удалить запись из главной таблицы генерируется исключение. Если есть такие ограничения, то их можно удалить, например, с помощью программы SQL Explorer.

Аналогичным способом можно реализовать и обновление столбцов связи (ключевых столбцов) связанных таблиц, заключающееся в том, что при изменении значения столбца связи главной таблицы соответственно изменяются значения столбца связи всех связанных записей подчиненной таблицы.

Например: CREATE TRIGGER ChangeStore FOR Store

ACTIVE BEFORE UPDATE

AS

BEGIN IF (OLD.S_Code <> NEW.S_Code)

THEN UPDATE Cards

SET C_Code2 = NEW.S_Code

WHERE C_Code2 = OLD.S_Code;

END

При изменении столбца S_code, используемого для связи главной таблицы store с подчиненной таблицей cards, автоматически изменяются значения столбца связи C_code2 соответствующих записей подчиненной таблицы.

Замечание

Чтобы столбец связи главной таблицы можно было редактировать, по нему не должен быть создан ключ. Если ключ создан, то его следует удалить, например, с помощью программы SQL Explorer. Более кардинальным решением проблемы является создание таблицы заново с помощью инструкции ALTER TABLE.

Поскольку использование триггеров не допускает существования ограничений на физическом уровне (при определении структуры таблиц), необходимо обеспечить также занесение значения в столбец связи подчиненной таблицы при добавлении в нее новой записи.

Создание генераторов

Напомним, что, в отличие от базы данных Paradox, для таблиц InterBase отсутствует автоинкрементный тип, обеспечивающий автоматическую установку уникальных значений. Поэтому для обеспечения уникальности значений ключевых столбцов совместно с триггерами используются генераторы. Генератор возвращает уникальное целочисленное значение.

С помощью языка SQL-сервера можно создать генератор и установить для него начальное значение.

Генератор создается следующией инструкцией:

CREATE GENERATOR <Имя генератора>;

Начальное значение задается инструкцией:

SET GENERATOR <Имя генератора> ТО <Начальное эначение>;

Начальное значение представляет собой целое число, начиная с которого формируется числовой ряд.

Обращение к созданному генератору выполняется с помощью функции: GET_ID

(<Имя генератора>,<Шаг>);

Эта функция возвращает значение, увеличенное на целочисленный шаг относительно предыдущего значения генератора

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]