tag:blogger.com,1999:blog-2325535076976773995.post3861020018375694853..comments2013-06-30T07:09:16.695-07:00Comments on Codeigniter JEDI: Ejemplo de trigger en postgresqlUnknownnoreply@blogger.comBlogger2125tag:blogger.com,1999:blog-2325535076976773995.post-19057670983713447302013-03-16T15:25:37.394-07:002013-03-16T15:25:37.394-07:00Buenas tardes Omar, checkeaste que el nombre de la...Buenas tardes Omar, checkeaste que el nombre de la columna "fue_activo" este escrito correctamente?? Francamente no es mucho lo que puedo ayudar sin hechar un vistazo a la tabla en la db. Lo que puedo aconsejarte es que si tienes la posibilidad de resolver el problema mediante varias consultas lo hagas de esa forma, opino que los triggers son útiles pero deben dejarse como última opción, ya que tienden a ser olvidados, y después de un tiempo pasan cosas raras en la base de datos que ni uno mismo se acuerda bien.. Suerte con esoPatricio Gabriel Masedahttps://www.blogger.com/profile/08263993508022696500noreply@blogger.comtag:blogger.com,1999:blog-2325535076976773995.post-42505131231900663902013-03-13T08:40:04.989-07:002013-03-13T08:40:04.989-07:00Buenos días.
Gracias por el aporte muy valioso.
T...Buenos días.<br />Gracias por el aporte muy valioso.<br /><br />Tengo una consulta:<br />Un trigger que debe 'dispararse' después de la actualización de una columna en una tabla.<br />El caso es que dentro de la función ligada al trigger, hay unas condiciones de comparación entre el nuevo valor de la columna y el valor de otra columna.<br /><br />Ej:<br /><br />CREATE OR REPLACE FUNCTION ActualizarEstado()<br />RETURNS TRIGGER AS<br />$ActualizarEstado$<br /><br />DECLARE<br /><br />BEGIN<br /><br />if NEW.es_activo = 'Y' then<br /><br />--Si el nuevo valor de la columna es_activo es 'Y', actualizar la columna fue_activo con 'Y' donde el id del estudiante sea igual al id del mismo en la variable NEW<br /><br />update estudiante<br />set fue_activo = NEW.es_activo<br />where estudiante_id = NEW.estudiante_id;<br /><br />RETURN NEW;<br /><br />else<br /><br />if (NEW.es_activo = 'N' and estudiante.fue_activo='Y') then<br /><br />--Si el nuevo valor de la columna es_activo es 'N' y fue_activo='Y' actualizar la columna fecha_cambio_estado con now() para guardar la fecha de cambio<br /><br />update adempiere.c_payment<br />set fecha_cambio_estado = now()<br />where estudiante_id = NEW.estudiante_id;<br />--<br />RETURN NEW;<br /><br />end if;<br />end if;<br /><br />END;<br />$ActualizarEstado$ LANGUAGE plpgsql;<br /><br />CREATE TRIGGER ActualizarEstado after UPDATE<br />ON estudiante FOR EACH row<br />EXECUTE PROCEDURE ActualizarEstado();<br /><br />Se genera el mensaje 'La columna fue_activo no existe'<br /><br />Saludos,<br />Omar<br />Unknownhttps://www.blogger.com/profile/07658341310656159451noreply@blogger.com