Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ud.doc
Скачиваний:
1
Добавлен:
01.04.2025
Размер:
821.25 Кб
Скачать

6.5.3 Генераторы

Создание

CREATE GENERATOR имя_генератора;

Генератор можно проинициализировать начальным значением. Это бывает нужно тогда, например когда удаляются все записи и таблица наполняется по новому. Значения генератора могут быть в диапазоне от -2^31 до 2^31 - 1.

SET GENERATOR имя_генератора TO число;

Генератор используется совместно с функцией GEN_ID:

GEN_ID (имя_генератора, шаг);

Изменение

Удаление

Примеры

insert into street(id_street, street)

values(gen_id(gnstreetid, 1), 'Куба')

Но в таком виде обычно генераторы не используются. А используются совместно с триггерами.

6.5.4 Триггеры

Создание

CREATE TRIGGER имя_триггера FOR имя_табл

[ACTIVE | INACTIVE]

{BEFORE | AFTER}

{DELETE | INSERT | UPDATE}

[POSITION number]

AS <тело_триггера> terminator

имя_триггера Имя существующего триггера.

ACTIVE Определяет, что действие триггера дает эффект, когда срабатывает (по умолчанию).

INACTIVE Определяет, что действие триггера не дает эффекта.

BEFORE Определяет, что триггер срабатывает перед ассоциированной операцией.

AFTER Определяет, что триггер срабатывает после ассоциированной операцией.

DELETE | INSERT | UPDATE Определяет операцию над таблицей, с которой связывает триггер to fire.

POSITION число Определяет порядок в котором срабатывают триггеры перед или после того же самого действия. число должно быть целым от 0 до 32767. Триггер с меньшим номером срабатывает первым. Триггеры для того же самого действия, с тем же самым позиционным номером, буду fire в случайном порядке.

тало_триггера Тело триггера, блок инструкций на языке процедур и триггеров.

Изменение

ALTER TRIGGER имя_триггера

[ACTIVE | INACTIVE]

[{BEFORE | AFTER} {DELETE | INSERT | UPDATE}]

[POSITION number]

[AS <тело_триггера>] [terminator]

Удаление

DROP TRIGGER имя_триггера;

Примеры

SET TERM ^ ;

CREATE TRIGGER "ADDSTREET" FOR "STREET"

ACTIVE BEFORE INSERT POSITION 0

as

begin

street.id_street=gen_id(gnstreetid, 1);

end

^

CREATE TRIGGER "DELSTREET" FOR "STREET"

ACTIVE BEFORE DELETE POSITION 0

as

begin

delete from person

where person.id_street = street.id_street;

end

^

SET TERM ;^

6.5.5 Индексы

Создание

CREATE [UNIQUE] [ASC[ENDING] | DESC[ENDING]]

INDEX index ON table (col [, col ...]);

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

ASC[ENDING]/DESC[ENDING] Сортирует столбцы в возрастающем порядке/ в убывающем порядке. По умолчанию – сортирует по возрастанию.

index Уникальное имя для индекса.

table Имя таблицы для которой индекс определен.

col Столбец в индексируемой таблице, собственно для которой и строится индекс.

Важно:

  1. Столбцы типов BLOB и массивы не могут быть индексированы;

  2. UNIQUE индекс не может быть создан на столбце или наборе столбцов, которые уже содержат повторяющиеся или NULL значения.

Изменение

ALTER INDEX name {ACTIVE | INACTIVE};

name Имя существующего индекса.

ACTIVE Включает индекс/выключает индекс

Удаление

Важно: Индексы определенные системой, как UNIQUE, PRIMARY KEY и FORGIN KEY ограничений целостности, не могут быть удалены.

DROP INDEX name;

name Имя существующего индекса

Примеры

В принципе все просто, поэтому их пока нет.

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