2013-05-13 2 views
1

Есть ли временные поля в Firebird 2.5? Когда я:Временные поля в Firebird

INSERT INTO table (..., tmp, ...) (..., val, ...) 

мне нужно что-то подобное в перед-вкладышем триггер:

... 
new.field1=(SELECT t2.id FROM table2 t2 where t2.field3=new.tmp and t2.field4=new.field5) 
new.field2=(SELECT t2.id FROM table2 t2 where t2.field3=new.tmp and t2.field6=new.field7) 
... 
+2

Вы можете посмотреть на взгляды с вместо триггера –

+0

так что нет никаких временных полей? – user2205473

+1

Не так, как вы хотите его использовать. Firebird имеет [глобальные временные таблицы] (http://www.firebirdsql.org/file/documentation/reference_manuals/reference_material/html/langrefupd25-ddl-table.html#langrefupd25-create-table) и [хранилище контекстной переменной] (http : //www.firebirdsql.org/file/documentation/reference_manuals/reference_material/html/langrefupd25-intfunc-set_context.html). Но использование столбцов, не входящих в таблицу во вставке, не является частью стандарта SQL, ни Firebird. Мое первое предложение, вероятно, самое легкое. –

ответ

0

Ваш код должен работать правильно. Если вы хотите быть уверены, что поле tmp всегда пустое, вы можете добавить

new.tmp = null; 

в конце триггера.

Однако использование выполнить блок или ХП, как предложено @livius это лучший способ

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