Estoy empezando a trabajar con el diccionario de datos de ADS, entre otras cosas para poder acceder desde PHP a mis datos y utilizar la potencia de los TRIGGERS.
Pero tengo algún q otro problema pq el programa me hace cosas raras si la tabla q estoy tocando tiene asociado un trigger, y este mismo trigger funcionan perfecto si el cambio lo hago desde Advantage Data Architect, no se si debo llamar a alguna función de ADS para habilitar el uso de Triggers.
Os dejo un ejemplo del trigger q utilizo.
- Code: Select all Expand view
DECLARE @id Integer;
DECLARE @co CURSOR AS SELECT * FROM __OLD;
DECLARE @cn CURSOR AS SELECT * FROM __NEW;
DECLARE @userName NCHAR(50);
DECLARE @appName NCHAR(50);
@userName = USER();
@appName = APPLICATIONID();
OPEN @co;
OPEN @cn;
TRY
FETCH @co;
FETCH @cn;
INSERT INTO SqlOperationLog ( DATETIME, USERNAME, APPNAME, TABLENAME, OPERATION )
VALUES ( Now(), @userName, @appName, 'DatosPais', 'UPDATE' );
@id = LASTAUTOINC(STATEMENT);
IF (( @co."CCODPAI" IS NOT NULL AND @cn."CCODPAI" IS NULL) OR
( @cn."CCODPAI" IS NOT NULL AND @co."CCODPAI" IS NULL) OR
( @co."CCODPAI" <> @cn."CCODPAI") )
THEN
INSERT INTO SqlColumnLog ( OPERATIONID, COLUMNNAME, USERNAME, APPNAME, TABLENAME, OLDVALUE, NEWVALUE )
VALUES ( @id, 'CCODPAI', @userName, @appName, 'DatosPais', cast( @co."CCODPAI" as sql_varchar ), cast( @cn."CCODPAI" as sql_varchar ) );
END IF;
IF (( @co."CNOMPAI" IS NOT NULL AND @cn."CNOMPAI" IS NULL) OR
( @cn."CNOMPAI" IS NOT NULL AND @co."CNOMPAI" IS NULL) OR
( @co."CNOMPAI" <> @cn."CNOMPAI") )
THEN
INSERT INTO SqlColumnLog ( OPERATIONID, COLUMNNAME, USERNAME, APPNAME, TABLENAME, OLDVALUE, NEWVALUE )
VALUES ( @id, 'CNOMPAI', @userName, @appName, 'DatosPais', cast( @co."CNOMPAI" as sql_varchar ), cast( @cn."CNOMPAI" as sql_varchar ) );
END IF;
IF (( @co."CBNDPAI" IS NOT NULL AND @cn."CBNDPAI" IS NULL) OR
( @cn."CBNDPAI" IS NOT NULL AND @co."CBNDPAI" IS NULL) OR
( @co."CBNDPAI" <> @cn."CBNDPAI") )
THEN
INSERT INTO SqlColumnLog ( OPERATIONID, COLUMNNAME, USERNAME, APPNAME, TABLENAME, OLDVALUE, NEWVALUE )
VALUES ( @id, 'CBNDPAI', @userName, @appName, 'DatosPais', cast( @co."CBNDPAI" as sql_varchar ), cast( @cn."CBNDPAI" as sql_varchar ) );
END IF;
IF (( @co."CRESPAI" IS NOT NULL AND @cn."CRESPAI" IS NULL) OR
( @cn."CRESPAI" IS NOT NULL AND @co."CRESPAI" IS NULL) OR
( @co."CRESPAI" <> @cn."CRESPAI") )
THEN
INSERT INTO SqlColumnLog ( OPERATIONID, COLUMNNAME, USERNAME, APPNAME, TABLENAME, OLDVALUE, NEWVALUE )
VALUES ( @id, 'CRESPAI', @userName, @appName, 'DatosPais', cast( @co."CRESPAI" as sql_varchar ), cast( @cn."CRESPAI" as sql_varchar ) );
END IF;
FINALLY
CLOSE @co;
CLOSE @cn;
END TRY;
Muchas gracias.