Знаете в какой то степени он прав. Нужна такая переменная.
Я сам уже и забыл когда впоследний раз эта тема меня мучила. Писались кучи
процедур тел триггиров одинаковые. Но потом из за этой возни пришлось в свой
генератор баз данных внести макрос дабы упростить себе роботу от этой
рутины. Что бы поменять в одном месте и везде поменялось.
и получилось пишем
%SCRIPT(SQLNameIsExistsIns;D025;D025_1;D025_2;IEIIO)
где макрос
IF (NEW.%2:S IS NULL) THEN NEW.%2:S = '%3:S';
IF (EXISTS(SELECT * FROM %0:S S WHERE B_UPPER(S.%2:S) = B_UPPER(NEW.%2:S)
and (S.%1:S <> NEW.%1:S)))
THEN EXECUTE PROCEDURE ERROR('NameIsExists', NEW.%2:S);
после чего генерится
CREATE TRIGGER D025_INS FOR D025 ACTIVE BEFORE INSERT POSITION 1
AS
BEGIN
IF (NEW.D025_2 IS NULL) THEN NEW.D025_2 = 'IEIIO';
IF (EXISTS(SELECT * FROM D025 S WHERE B_UPPER(S.D025_2) =
B_UPPER(NEW.D025_2) and (S.D025_1 <> NEW.D025_1)))
THEN EXECUTE PROCEDURE ERROR('NameIsExists', NEW.D025_2);
END
но это не решение проблемы т.к. если меняется логика нашего макроса
"SQLNameIsExistsIns" наступает пипец который заставит нас перекомпилить все
триггера. Буть переменная можно было просто создать процедуру в которой мы
получили какая таблица вызвала ее и сгенерили бы код.
"Dmitriy Kovalenko" <[EMAIL PROTECTED]>
сообщил/сообщила в новостях следующее:
news:[EMAIL PROTECTED]
> Всем привет.
>
> Имеется ли возможность (вопрос
> теоретический, адресуется шаманам)
> сотворить некую контекстную
> переменную, видимую в теле триггера, да
> бы в нем "программно" знать, для какой
> таблицы выполняется искомое тело
> триггера?
> Если такой вопрос рассматривался уже,
> то чем закончился? Избили ногами
> вопрошающего или "шанс" остался? :)
>