From: | Paolo Lopez <murphyperu(at)gmail(dot)com> |
---|---|
To: | pgsql-es-ayuda(at)postgresql(dot)org |
Subject: | Triggers Help |
Date: | 2005-08-20 17:42:10 |
Message-ID: | ab97ec2005082010427e9f1ee1@mail.gmail.com |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-es-ayuda |
Hola a todos.
De repente mi pregunta es muy obvia, pero mas de uno se habra topado
con problemas de concurrencia.
Bueno, la pregunta es si los triggers en postgres son secuenciales si
hay multiples pedidos a la vez sobre una accion en 1 misma tabla (
delete, update, etc ).
Mi caso concreto es que tengo una tabla que tiene como 8 campos, pero
de ellas solo requiero que 2 de ellas ( usuario y año ) se validen. Es
decir, que solo 1 usuario este dentro de 1 año, a pesar de que hay
otras 6 llaves que elevan las combinaciones posibles.
Si hago "trigger before insert for each row" tendria que hacer algo
dentro del trigger como :
IF (
( select count(*) from tablita where idUsuario="le doy el dato" and
idAño="le doy el dato" ) = 0
)
entonces dejar registrar
Pero esto es "real" ante las concurrencias ???. Teniendo en cuanta que
el select toma tiempo en llevarse a cabo, y lo leido antes podria ya
no ser lo correcto mili o nano segundos mas adelante.
Estoy que busco soluciones, tanto asi que he pensado en hacer una
tabla auxiliar de solo estos 2 campos que necesito como PK, para asi
poder hacer valer lo que quiero.
Espero que alguien pueda ayudarme.
Gracias de antemano.
El Murphy.
From | Date | Subject | |
---|---|---|---|
Next Message | Alvaro Herrera | 2005-08-20 19:06:00 | Re: Triggers Help |
Previous Message | Oswaldo Hernández | 2005-08-20 10:42:28 | Re: Listar columnas de la llave primaria |