Hola, en la restricción CHECK llamo a una función que retorna un valor BOOLEAN, 
ahora ... si podría determinar cual es el ultimo item (en la tabla B tengo un 
campo que es ORDEN, bastaría con hacerle un MAX) ... que tonto de mi parte, no 
considere esa solución, de todas formas quise comentar porque investigando 
encontré una sentencia llamada DEFERRABLE, sin embargo no he podido 
implementarla (estoy usando PostgreSQL 9.3.X).
Por lo de PostGIS no tenia conocimiento, veo que me sera de utilidad. Gracias 
por el dato.

> Date: Wed, 30 Oct 2013 13:30:42 -0300
> From: [email protected]
> To: [email protected]
> CC: [email protected]
> Subject: Re: [pgsql-es-ayuda] Ejecutar restriccion CHECK al finalizar la 
> insercion/actualizacion
> 
> Pedro PG escribió:
> > Buen día lista, yo nuevamente por aquí aprendiendo. Tengo dos tablas:
> > A -|-----<- B (en B esta el id de A)
> > :: A representa una ruta:: B representa un(os) puntos de la ruta A
> > En la tabla B tengo una restricción CHECK, esta valida que el punto de 
> > origen no sea el mismo que el de salida (entre otras validaciones 
> > adicionales).
> > Tengo una función que inserta en A y otra función que inserta en B. Desde 
> > la función A llamo a la función para insertar en B.
> > El problema radica en que la restricción CHECK se activa por cada tupla 
> > actualizada / insertada. ¿ Hay alguna forma de que la restricción CHECK se 
> > active solo cuando la ultima tupla sea insertada / actualizada ?
> 
> ¿Cómo sabe una tupla en B que es la última?  Si puedes crear una
> expresión que lo determine, entonces puedes hacer un CASE que verifique
> esa expresión, y ejecute este chequeo si la expresión es verdadera; y si
> no lo es, entonces no hace nada.
> 
> Algo así:
> CHECK (CASE WHEN es_ultima(value) THEN verifica_punto_origen(value) ELSE true 
> END)
> 
> En todo caso, tu problema me parece muy sospechoso (posiblemente mal
> modelo) y también me pregunto si no deberías estar usando PostGIS o algo
> así.
> 
> -- 
> Álvaro Herrera                http://www.2ndQuadrant.com/
> PostgreSQL Development, 24x7 Support, Training & Services
> 
> -
> Enviado a la lista de correo pgsql-es-ayuda ([email protected])
> Para cambiar tu suscripción:
> http://www.postgresql.org/mailpref/pgsql-es-ayuda
                                          

Responder a