Firebird 动态 Var New 和 Old

Firebird dynamic Var New and Old

我需要验证来自 Table 的动态字段。例如:

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 ;

问题是:如何将 "The name of the field that the query returns me " 放入上面的代码中。

即如果查询 returns 我的 field1 和 field5 ,我会触发

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

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