Re: pequeña ayuda con triggers y functions

From: "Aldo Quezada" <huincha(at)gmail(dot)com>
To: "Fernando Moreno" <azazel(dot)7(at)gmail(dot)com>
Cc: "Jaime Casanova" <systemguards(at)gmail(dot)com>, pgsql-es-ayuda(at)postgresql(dot)org
Subject: Re: pequeña ayuda con triggers y functions
Date: 2008-05-20 15:45:26
Message-ID: 45ace9db0805200845v699b98bbw8392c82586270935@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-es-ayuda

Gracias Jaime , me funciono super bien

Grax , Saludos

2008/5/20 Fernando Moreno <azazel(dot)7(at)gmail(dot)com>:

> ¿campo3 siempre será 1?
>
> Independientemente de lo anterior, tu uso de los triggers es incorrecto,
> pues si se trata de modificar el registro a actualizar, no hay ninguna
> necesidad de ejecutar un UPDATE, sino que te basta con modificar la variable
> record NEW.
>
> El día 20 de mayo de 2008 10:04, Aldo Quezada <huincha(at)gmail(dot)com>
> escribió:
>
> Asi es Jaime el problema es asi.
>>
>>
>> a ver si puedo explicarme mejor
>>
>> tabla1
>> id
>> campo 1
>> campo 2
>> campo 3
>>
>> por pagina php se actualizan campo 1 y 2 , porque lo que quiero que el
>> campo 3 se actualize con un nuevo valor
>>
>> CREATE TRIGGER change_sincro_ser BEFORE UPDATE
>> ON tabla1
>> FOR EACH ROW
>> EXECUTE PROCEDURE cambia_sincro( ID ) *(<-- aca deberia mandarse el id o
>> es automatico eso no lo entiendo)*
>>
>>
>> CREATE OR REPLACE FUNCTION cambia_sicro(id int) RETURNS trigger AS '
>> BEGIN
>> IF tg_op = ''UPDATE'' THEN
>> UPDATE tabla1 set campo3 = 1 where id = id ;
>>
>> END IF;
>>
>> END
>> ' LANGUAGE plpgsql;
>>
>>
>> esto es mas menos lo que tengo pero no se si estara bien
>>
>> Saludos
>>
>>
>>
>>
>>
>> On Mon, May 19, 2008 at 11:00 PM, Jaime Casanova <systemguards(at)gmail(dot)com>
>> wrote:
>>
>>> 2008/5/19 Aldo Quezada <huincha(at)gmail(dot)com>:
>>> > OK
>>> >
>>> > a ver..
>>> >
>>> > tengo una tabla a la cual se le hacen actualizaciones por php.. el
>>> codigo
>>> > del php es un asco por desorden del codigo.
>>> > por lo cual preferi buscar una solucion por haciendo un trigger y una
>>> > funcion, que cada vez que se actualizara esta tabla, lanzara el trigger
>>> para
>>> > actualizar un campo de esta misma tabla, pero caigo en la redundancia
>>> > ciclica.
>>> >
>>>
>>> Corrigeme si me equivoco, tu problema es asi:
>>>
>>> UPDATE tabla1
>>> -> se ejecuta TRIGGER
>>> -> dentro del trigger ejecutas otro UPDATE tabla1
>>> -> Se ejecuta nuevamente el TRIGGER y vuelves al paso anterior
>>>
>>> Eso es porque dentro del TRIGGER no debes (ni necesitas) hacer un
>>> UPDATE a la misma tabla al mismo registro... dentro del TRIGGER tienes
>>> disponible el record NEW que hace referencia al registro que se esta
>>> actualizando. Todo lo que debes hacer es definir el TRIGGER como
>>> BEFORE UPDATE y actualizar el campo en el registro NEW (NEW.campo) en
>>> lugar de hacer un UPDATE
>>>
>>>
>>> --
>>> Atentamente,
>>> Jaime Casanova
>>> Soporte y capacitación de PostgreSQL
>>> Guayaquil - Ecuador
>>> Cel. (593) 087171157
>>>
>>
>>
>>
>> --
>> アルド ファビアン ケサダ ベアス
>> あるど ふぁびあん けさだ べあす
>>
>> Al sentir una gran tristeza te das cuenta que la alegría es el mejor
>> remedio para seguir adelante.
>>
>> ¿En qué se parece un cigarro,una cerveza, medicamentos y Michale Jackson?
>> Todo eso hay que mantenerlo fuera del alcance de los niños.
>>
>
>

--
アルド ファビアン ケサダ ベアス
あるど ふぁびあん けさだ べあす

Al sentir una gran tristeza te das cuenta que la alegría es el mejor remedio
para seguir adelante.

¿En qué se parece un cigarro,una cerveza, medicamentos y Michale Jackson?
Todo eso hay que mantenerlo fuera del alcance de los niños.

In response to

Browse pgsql-es-ayuda by date

  From Date Subject
Next Message Edwin Quijada 2008-05-20 15:46:44 RE: Duda
Previous Message Fernando Moreno 2008-05-20 15:24:27 Re: pequeña ayuda con triggers y functions