[Pgsql-ayuda] RV: function syb/pgsql

Alvaro Herrera Munoz alvherre@dcc.uchile.cl
Wed, 4 Jun 2003 09:56:13 -0400


On Wed, Jun 04, 2003 at 08:26:01AM -0500, sandrigo lezcano wrote:
> ----- Original Message -----
> From: Manuel Sugawara
> > ?en la parte de declaraciones de la funci?n? o ?quieres crear un tipo
> > que sea un especie de alias para numeric(13,2)?; si es lo segundo
> > puedes usar algo como:
> >
> > create domain t_guaranies as numeric(13,2);
> 
> mmm.  puedo definir los checks tb
> dentro de los domain???  explico en sybase:
> 
> t_estado_civil char check(@column in('1','2','3','4','5','6','7'))

No deberia ser necesario.  Definele un constraint al dominio:

CREATE DOMAIN estado_civil AS "char" 
CONSTRAINT check_estado_valido (CHECK VALUE in ('1', '2', ...))

Posteriormente cuando uses el dominio estados_civiles como tipo, sólo
aceptará esos valores:
CREATE TABLE personas (
				nombre text,
				ecivil estado_civil
);
	

Permíteme recomendarte que uses el tipo "char" (con las comillas incluidas)
en lugar de char (sin comillas), porque te ahorrarás 4 bytes por cada
registro que contenga ese tipo (obviamente solo en casos como este donde
el campo en cuestion tiene un número limitado de posibles valores).

Suerte,

-- 
Alvaro Herrera (<alvherre[@]dcc.uchile.cl>)
"Find a bug in a program, and fix it, and the program will work today.
Show the program how to find and fix a bug, and the program
will work forever" (Oliver Silfridge)