Pip, te cuento que cómo lo resolví... y para otros lectores
1.- cree una función audit:
Código:
function audit() {
// query de auditoria
$audit = "create temp table audit_tmp (usuario varchar(30), ip inet);";
$audit .= " insert into audit_tmp values ('".$_SESSION['usr']."', '".$_SERVER['REMOTE_ADDR']."');";
echo $audit."<br>"; /*imprimir la query*/
$this->Query_ID = pg_query($audit); /* vale decir que estoy usando una pequeña clase */
}
2.- llamo la función audit(), justo antes de hacer el insert, update o delete...
3.- creo una función que será llamada dsde un trigger, y que devuelve, obviamente, un trigger:
Código:
BEGIN
IF (TG_OP = 'DELETE') THEN
INSERT INTO ssc.auditor (id, user_session, op, nb_tabla, ip) VALUES (OLD.id,(SELECT usuario FROM audit_tmp),TG_OP,TG_RELNAME,(SELECT ip FROM audit_tmp));
RETURN OLD;
ELSIF (TG_OP = 'UPDATE') THEN
INSERT INTO ssc.auditor (id, user_session, op, nb_tabla, ip) VALUES (NEW.id,(SELECT usuario FROM audit_tmp),TG_OP,TG_RELNAME,(SELECT ip FROM audit_tmp));
RETURN NEW;
ELSIF (TG_OP = 'INSERT') THEN
INSERT INTO ssc.auditor (id, user_session, op, nb_tabla, ip) VALUES (NEW.id,(SELECT usuario FROM audit_tmp),TG_OP,TG_RELNAME,(SELECT ip FROM audit_tmp));
RETURN NEW;
END IF;
END
Me imagino, que hay forma de mejorar esto, pero así lo he resuleto, cuando sepa como mejorarlo, seguro que lo cambio...
Pendientes