From: | Alejandro Carrillo <fasterzip(at)yahoo(dot)es> |
---|---|
To: | Armando Venegas Pérez <venegasp_armando(at)hotmail(dot)com>, "pgsql-es-ayuda(at)postgresql(dot)org" <pgsql-es-ayuda(at)postgresql(dot)org> |
Subject: | Re: [pgsql-es-ayuda] ¿Como detecto si un UPDATE modifica un campo en especifico? |
Date: | 2012-04-19 17:49:48 |
Message-ID: | 1334857788.65932.YahooMailNeo@web171004.mail.ukl.yahoo.com |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-es-ayuda |
Creeria yo q la falla esta acá(donde estan los -- aqui), segun el enunciado "necesito detectar si modifica un campo definido, en caso de no hacerlo, este se cambia a nulo.":
CREATE OR REPLACE FUNCTION marca_estatus() RETURNS TRIGGER AS $marca_estatus$ -- aqui
DECLARE
BEGIN
IF OLD.estatus = NEW.estatus THEN -- aqui
NEW.estatus := null;
END IF;
RETURN NEW;
END;
$marca_estatus$ LANGUAGE plpgsql;
>________________________________
> De: Armando Venegas Pérez <venegasp_armando(at)hotmail(dot)com>
>Para: pgsql-es-ayuda(at)postgresql(dot)org
>Enviado: Jueves 19 de abril de 2012 11:45
>Asunto: [pgsql-es-ayuda] ¿Como detecto si un UPDATE modifica un campo en especifico?
>
>
>
>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 | Armando Venegas Pérez | 2012-04-19 18:14:26 | RE: [pgsql-es-ayuda] ¿Como detecto si un UPDATE modifica un campo en especifico? |
Previous Message | Jaime Casanova | 2012-04-19 17:46:49 | Re: [pgsql-es-ayuda] ¿Como detecto si un UPDATE modifica un campo en especifico? |