Hello, Tonal!
You wrote  on Tue, 01 Apr 2008 16:55:47 +0700:

T> Т.е. конфликт, цикл, при параллельном выполнении не создаётся из-за
T> FK,  а не из за явной проверки процедурой.

хлопцы, а чо так сложно то.... с процедурами!?
у меня проверка в триггере в цикле... или этого недостаточно?

create or alter trigger DM_GR_CYCLE_BU for DM_GR before update
as
declare variable ID Integer;
begin
 if (coalesce(new.Parent_ID, 0)<>coalesce(old.Parent_ID, 0)) then begin
   ID = new.Parent_ID;
   while (ID is not null) do begin
     if (ID = old.ID) then
       exception VariantException 'Зациклена цепочка!';
     select Parent_ID from DM_GR where ID = :ID into :ID;
   end
 end
end



Фёдоров Евгений.
ЗАО "Трест-М". Екатеринбург.

Reply via email to