Hello, Nikolay!
You wrote on Tue, 4 Dec 2007 14:55:58 +0200:
N>>> В таблице rdb$triggers есть поле тип триггера. Значения от 0 до 6 я
N>>> знаю, а что означают значения после 6 ? У кого перечень есть?
>> Подозреваю, что это те, которые на несколько действий. Проверять
>> лень.
N> именно. Нужен конкретный список
вот конкретный код генерации текста.... на паскаль переводить лень :-)
local Type := DataSet(DataSet, doGetFieldAs,'Type_', AsInteger)+1, i := 0
local cType := if(Type and 1, 'A', 'B'), cTypes := {'I','U','D'}
local lType := if(Type and 1, 'after', 'before'), lTypes :=
{'insert','update','delete'}
Type := Type div 2
while Type <> 0
cType += cTypes[Type and 3]
lType += if(i++ = 1,' ',' or ') + lTypes[Type and 3]
Type := Type div 4
end
DataSet(DataSet, doSetField, 'Type_', cType)
Text := Format('create or alter trigger %s for %s%s %s %s',\
{DataSet(DataSet, doGetField, 'rdb$trigger_name')\
,DataSet(DataSet, doGetField, 'rdb$relation_name')\
,if(DataSet(DataSet, doGetField, 'rdb$trigger_inactive', 0)=1,'
inactive','')\
,lType\
,if((Pos:=DataSet(DataSet, doGetField,
'rdb$trigger_sequence'))<>0,Format('position %d', {Pos}),'')})
Text += crlf + DataSet(DataSet, doGetField, 'Text', '')
DataSet(DataSet, doSetField, 'Text', Text)
DataSet(DataSet,doNext)
Фёдоров Евгений.
ЗАО "Трест-М". Екатеринбург.