В начало

Триггеры базы Должники банков

 

            Есть база данных «Должники банков», в базе есть три таблицы: «Должники», «Кредиты», «Банки». Также имеются три генератора, для генерации увеличивающихся на 1 чисел.

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

            Триггер пишется легко, но с маленькими нюансами.

SET TERM !;

CREATE TRIGGER Trig_Doljniki FOR Doljniki

ACTIVE BEFORE INSERT POSITION 0

   AS

   BEGIN

   IF ((NEW.ID_Doljnika IS NULL) OR (NEW.ID_Doljnika = 0)) THEN

          NEW.ID_Doljnika = GEN_ID(GEN_Doljniki, 1);

   END!

SET TERM ;!

SET TERM !;

CREATE TRIGGER Trig_Krediti FOR Krediti

ACTIVE BEFORE INSERT POSITION 0

   AS

   BEGIN

   IF ((NEW.ID_Kredita IS NULL) OR (NEW.ID_Kredita = 0)) THEN

          NEW.ID_Kredita = GEN_ID(GEN_Krediti, 1);

   END!

SET TERM ;!

SET TERM !;

CREATE TRIGGER Trig_Banki FOR Banki

ACTIVE BEFORE INSERT POSITION 0

   AS

   BEGIN

   IF ((NEW.ID_Banka IS NULL) OR (NEW.ID_Banka = 0)) THEN

          NEW.ID_Banka = GEN_ID(GEN_Banki, 1);

   END!

SET TERM ;!

 

ПРИМЕЧАНИЕ: автоинкремент не работает, если добавлять новые записи в программе «Interbase 6.5» через свойства таблицы, закладку «Data», но работает, если добавлять новую запись SQL-запросом через утилиту «Interactive SQL». И чтобы сразу видеть изменения в таблице нужно в конце запроса дописывать «COMMIT;».