powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / IBExpert [игнор отключен] [закрыт для гостей] / Компарер, изменение триггера
6 сообщений из 6, страница 1 из 1
Компарер, изменение триггера
    #39178665
Tofik Emailovich
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
День добрый.

Обнаружил ошибку при изменении триггера.

Если в триггере меняется позиция и/или тип (insert, update, delete), на примере моего случая ACTIVE BEFORE INSERT POSITION 0 меняется на ACTIVE BEFORE UPDATE POSITION 91, тело неизменно, то в результирующем скрипте получается следующее: очищается тело триггера (видимо в моей базе есть зависимости), а вот при восстановлении триггера всегда выполняется только одно действие - либо изменение позиции, либо изменение типа, либо восстановление тела триггера.

Заранее спасибо.
...
Рейтинг: 0 / 0
Компарер, изменение триггера
    #39178702
Tofik Emailovich
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
В дополнение хочу немножко поправиться, не совсем точно описал:

В результирующем скрипте при восстановлении триггера выполняется одно из двух - либо изменение позиции и/или изменение типа, либо восстановление тела триггера.
...
Рейтинг: 0 / 0
Компарер, изменение триггера
    #39190470
IBExpert
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
У меня не воспроизводится.
...
Рейтинг: 0 / 0
Компарер, изменение триггера
    #39191379
Tofik Emailovich
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый день.

Я решил воссоздать проблему с нуля. Воспроизводится только в случае, если тело триггера остается неизменным, а меняется только тип и/или позиция. Если же вместе с изменением типа и/или позиции меняется и тело триггера, то все в порядке.

Ниже эталоны баз на которых я воспроизвел проблему.
Различия:
1. тип поля TEST.DATA.
2. тип и позиция триггера TEST_BU0.

Эталон метаданных мастера:

SET SQL DIALECT 3;

CREATE TABLE TEST (
ID INTEGER NOT NULL,
DATA INTEGER
);

ALTER TABLE TEST ADD CONSTRAINT PK_TEST PRIMARY KEY (ID);

SET TERM ^ ;

CREATE TRIGGER TEST_BU0 FOR TEST
ACTIVE BEFORE UPDATE POSITION 50
AS
begin
new.DATA = 1;
end
^
SET TERM ; ^



Эталон метаданных таргета:

SET SQL DIALECT 3;

CREATE TABLE TEST (
ID INTEGER NOT NULL,
DATA SMALLINT
);

ALTER TABLE TEST ADD CONSTRAINT PK_TEST PRIMARY KEY (ID);

SET TERM ^ ;

CREATE TRIGGER TEST_BU0 FOR TEST
ACTIVE BEFORE INSERT POSITION 0
AS
begin
new.DATA = 1;
end
^
SET TERM ; ^
...
Рейтинг: 0 / 0
Компарер, изменение триггера
    #39198452
IBExpert
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Исправил.
...
Рейтинг: 0 / 0
Компарер, изменение триггера
    #39202838
Tofik Emailovich
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Спасибо.
...
Рейтинг: 0 / 0
6 сообщений из 6, страница 1 из 1
Форумы / IBExpert [игнор отключен] [закрыт для гостей] / Компарер, изменение триггера
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]