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 更改或验证要求,您将需要重新创建触发器以将添加或删除的字段考虑在内。
我需要验证来自 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 更改或验证要求,您将需要重新创建触发器以将添加或删除的字段考虑在内。