From: | Armando Venegas Pérez <venegasp_armando(at)hotmail(dot)com> |
---|---|
To: | <pgsql-es-ayuda(at)postgresql(dot)org> |
Subject: | ¿Como detecto si un UPDATE modifica un campo en especifico? |
Date: | 2012-04-19 16:45:03 |
Message-ID: | BAY164-W5185A193D1C1377B002223F73D0@phx.gbl |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-es-ayuda |
Buen dia comunidad.
Al ejecutar un UPDATE necesito detectar si modifica un campo definido, en caso de no hacerlo, este se cambia a nulo.
--Doy más detalles--
Mi tabla:
CREATE TABLE retorno
(
id serial NOT NULL,
nombre character varying(10),
edad integer,
estatus character(1),
CONSTRAINT pk_retorno PRIMARY KEY (id)
);
Mi TRIGGER:
CREATE TRIGGER marca_estatus BEFORE UPDATE
ON retorno FOR EACH ROW
EXECUTE PROCEDURE marca_estatus();
Mi procedimiento: (Entiendo que esto es lo que debo de modificar)
CREATE OR REPLACE FUNCTION marca_estatus() RETURNS TRIGGER AS $marca_incorporacion$
DECLARE
BEGIN
IF OLD.estatus != NEW.estatus THEN
NEW.estatus := null;
END IF;
RETURN NEW;
END;
$marca_estatus$ LANGUAGE plpgsql;
Mis requerimientos:
Si ejecuto:
UPDATE retorno SET nombre='Alberto' WHERE id=6;
En la tabla el campo estatus debe ser:
NULL
---------------------
Si ejecuto:
UPDATE retorno SET nombre='Albert', edad=15 WHERE id=6;
En la tabla el campo estatus debe ser:
NULL
----------------------
Si ejecuto:
UPDATE retorno SET nombre='Alberto', estatus='A' WHERE id=6;
En la tabla el campo estatus debe ser:
'A'
---------------------
Si ejecuto:
UPDATE retorno SET estatus='E' WHERE id=6;
En la tabla el campo estatus debe ser:
'E'
----------------------
GRACIAS
Nota: estoy usando Postgres 8.4 en linux
From | Date | Subject | |
---|---|---|---|
Next Message | Jaime Casanova | 2012-04-19 17:46:49 | Re: [pgsql-es-ayuda] ¿Como detecto si un UPDATE modifica un campo en especifico? |
Previous Message | Alejandro Carrillo | 2012-04-19 03:51:57 | Re: Consultar con Crosstab |