Firebird动态Var New和Old

时间:2016-08-31 11:16:24

标签: triggers firebird psql

我需要从表中验证动态字段。例如:

CREATE TRIGGER BU_TPROYECTOS FOR TPROYECTOS
  BEFORE UPDATE AS
  DECLARE VARIABLE vCAMPO VARCHAR(64);
BEGIN
  /*In then table "TCAMPOS" are the fields to validate*/
  for Select CAMPO from TCAMPOS where TABLA = TPROYECTOS and ACTUALIZA = 'V' into :vCAMPO do
    Begin
      if (New.:vCAMPO <> Old.:vCampo) then
      /*How i get dynamic New.Field1, New.Field2 on query return*/
    End;   
END ;

问题是:我怎样才能把#34;查询返回的字段的名称&#34;在上面的代码中。

即如果查询返回field1和field5,我会把触发器

 if ( New.Field1 < > Old.Field1 ) or ( New.Field5 < > Old.Field5 ) then

1 个答案:

答案 0 :(得分:0)

Firebird中没有这样的功能。您将需要创建(并且最好)生成将引用硬编码的所有字段的触发器。如果基础表发生更改或验证要求,则需要重新创建触发器以考虑添加或删除的字段。