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
Фёдоров Евгений.
ЗАО "Трест-М". Екатеринбург.