2017-02-22 39 views
2

Это мой псевдокод для доступа к новой и старой переменной в триггере Firebird.Обработка новой и старой переменной в триггерах Firebird

create trigger my_trigger for cards 
    before insert or update 
as 
    declare var_reccord cards; 
begin 
    if (inserting) then 
    begin 
     var_reccord = new; 
    end 
    else 
    begin 
     var_reccord = old; 
    end 

    -- USE var_reccord 
end 

Но это не работает для меня. Как я могу это сделать?

ответ

3

Кажется, что вы хотите использовать что-то вроде Oracle %ROWTYPE, но, к сожалению, текущие версии Firebird этого не поддерживают.

Контекстные переменные old и new допускают доступ к столбцам, а не ко всей строке. Другими словами, вы должны использовать их как old.columnName. См. documentation для получения дополнительной информации.

Например, если таблица cards имеет поле foo, то вы можете использовать его как

create trigger my_trigger for cards 
    before insert or update 
as 
    declare var_foo TYPE OF COLUMN cards.foo; 
begin 
    if (inserting) then 
    begin 
     var_foo = new.foo; 
    end 
    else 
    begin 
     var_foo = old.foo; 
    end 

    -- USE var_foo 
end 

 Смежные вопросы

  • Нет связанных вопросов^_^