Re: excepcion en postgres

From: Emanuel Calvo Franco <postgres(dot)arg(at)gmail(dot)com>
To: Diego Ayala <netdiego81(at)gmail(dot)com>
Cc: Postgres Ayuda <pgsql-es-ayuda(at)postgresql(dot)org>
Subject: Re: excepcion en postgres
Date: 2009-06-22 15:52:09
Message-ID: f205bb120906220852v2ed0f705i837f0b9e3f26dbf5@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-es-ayuda

El 22 de junio de 2009 12:02, Diego Ayala<netdiego81(at)gmail(dot)com> escribió:
> buenos dias listeros, queria consultarles si alguno sabe si existe alguna
> excepcion, o funcion o algo parecido  a lo q hace DUP_VAL_ON_INDEX en
> Oracle, con esta excepcion lo que se verifica es si existe o no un valor
> dentro de una tabla, antes de insertar, esto seria para no estar haciendo
> una verificacion if exists..??
>

No lo creo. Pero si ese campo tiene un indice, el optimizador lo
utilizará para buscar el valor y podrás hacer 'if exists' no
consumiendo muchos recursos.

Podés hacer una función como esta:

CREATE OR REPLACE FUNCTION existe(int) RETURNS boolean LANGUAGE sql AS $body$
select CASE WHEN aid IS NOT NULL THEN 'true'::boolean END
from (select 1 aid) as a where exists(select aid from accounts s
where s.aid=3324323);
$body$;

Result (cost=8.28..8.30 rows=1 width=4) (actual time=0.363..0.363 rows=0 loops
=1)
One-Time Filter: $0
InitPlan 1 (returns $0)
-> Index Scan using accounts_pkey on accounts s (cost=0.00..8.28 rows=1 w
idth=0) (actual time=0.048..0.048 rows=0 loops=1)
Index Cond: (aid = 3324323)
-> Result (cost=0.00..0.01 rows=1 width=0) (never executed)
Total runtime: 0.426 ms
(7 rows)

Utiliza el indice :)

--
Emanuel Calvo Franco
ArPUG [www.arpug.com.ar] / AOSUG Member
www.emanuelcalvofranco.com.ar

In response to

Browse pgsql-es-ayuda by date

  From Date Subject
Next Message Oswaldo Hernández 2009-06-22 16:01:59 Re: excepcion en postgres
Previous Message Juan Pablo Cook 2009-06-22 15:51:18 Re: [pgsql-es-ayuda] Duda con modelado de Datos + Crear Función