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