[pgsql-ayuda] Obligar a cierta condicion desde el SQL

hypatia@mail.internet.com.mx hypatia@mail.internet.com.mx
Fri, 07 Apr 2000 11:20:19 -0500


> CREATE TABLE "casilla" (
>        "id_casilla" serial,
>        "num_casilla" int2,
>        "id_elec" int2,
>        "ubicacion" text(150)
> );
> 
> CREATE TABLE "formula" (
>        "id_formula" serial,
>        "nombre_formula" text(80),
>        "id_elec" int2
> );
> 
> Estas tablas estan relacionadas por una tercera:
> 
> CREATE TABLE "votos" (
>        "id_casilla" int2,
>        "id_formula" int2,
>        "num_votos" int2
> );
> 

Una idea puede ser: 

CREATE TABLE "votos" ( 
	id_casilla int2, 
	id_formula int2, 
	num_votos int2, 
	CONSTRAINT cont1 CHECK ( match_elec(id_casilla, id_formula) ) INITIALLY
IMMEDIATE
); 

CREATE FUNCTION "match_elec" (int2,int2) RETURNS bool AS 
'SELECT TRUE WHERE ( SELECT id_elec FROM casilla WHERE id_casilla = $1 )
IN 
( SELECT id_elec FROM formula WHERE id_formula = $2 )' 
LANGUAJE 'SQL'; 

Pero no estoy seguro que funcione este IN. 

Podria funcionar: 

CREATE TABLE "votos" ( 
	id_casilla int2, 
	id_formula int2, 
	num_votos int2, 
	CONSTRAINT cont1 CHECK ( casilla_elec(id_casilla) =
formula_elec(id_formula) ) INITIALLY IMMEDIATE
); 

CREATE FUNCTION "casilla_elec" (int2) RETURNS int2 AS 
'SELECT id_elec FROM casilla WHERE id_casilla = $1 ' 
LANGUAJE 'SQL'; 

CREATE FUNCTION "formula_elec" (int2) RETURNS int2 AS 
'SELECT id_elec FROM formula WHERE id_casilla = $1' 
LANGUAJE 'SQL'; 

Quiza si lo pruebas y checas las siguientes referencias, puedas
encontrar la mejor opción para lo que necesitas: 

file:/usr/doc/postgresql-6.5.2/postgres/sql-createtable.htm
file:/usr/doc/postgresql-6.5.2/postgres/sql-createfunction.htm
file:/usr/doc/postgresql-6.5.2/postgres/sql-select.htm

--
Saludos 
Juan Pablo Rosas
--------- Pie de mensaje -------------------------------------------
Archivo historico: http://tlali.iztacala.unam.mx/maillist/pgsql-ayuda
Cancelar inscripcion:
mail to: majordomo@tlali.iztacala.unam.mx
text   : unsubscribe pgsql-ayuda