On Mon, 19 Aug 2002, 31 wrote:
> Intento hacer una tabla con dos columnas de clave primaria que a su vez
> son claves foraneas, y me contesta esto
>
> psql:plantas.sql:28: ERROR: number of key attributes in referenced
> table must be equal to foreign key
> Illegal FOREIGN KEY definition references "clons"
>
> y no consigo entender porque me da este error, os pego el archivo de
> creaci�n de las tablas a ver si alguien ve alguna forma de solucionarlo
>
> create table nais (
> nome varchar(15) primary key,
> procedencia varchar(30),
> precio money,
> dxerminaci�n date,
> tipo varchar(40)
> );
> create table clons (
> nome varchar(15) references nais,
> dclon date,
> dtrasplante date,
> dcolleita date,
> comentarios varchar(40),
> primary key(nome, dclon)
> );
> create table podas (
> nome varchar(15) references clons,
> dclon date references clons,
> dpoda date
> );
A mi me parece que intentas definir una clave foranea nome varchar(15),
sobre una clave primaria (varchar(15), date).
Supongo que lo m�s sencillo ser�a usar claves primarias de tipo SERIAL.
Equivale a usar secuencias. De esa manera obtienes una clave num�rica
facilmente referenciable desde otras tablas mediante un int4.
Si adem�s de esto deseas evitar duplicidados puedes usar
create unique index (nome, dclon)
Bueno todo esto son ideas que deber�an ayudarte. Una soluci�n ser�a
la siguiente aunque puede haber otras formas de hacerlo a mi me gusta
relacionar claves de tablas distintas mediante simples claves num�ricas
(Solo 4 bytes).
create table nais (
nais_key SERIAL,
nome varchar(15),
procedencia varchar(30),
precio money,
dxerminaci�n date,
tipo varchar(40),
unique index (nome),
primary key (nais_key)
);
create table clons (
clon_key SERIAL,
nais int4 references nais,
dclon date,
dtrasplante date,
dcolleita date,
comentarios varchar(40),
unique index (nais, dclon),
primary key (clon_key)
);
create table podas (
podas_key SERIAL,
clons int4 references clons,
dpoda date,
unique index (nome),
primary key (podas_key)
);
Un saludo
Antonio Castro
+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
/\ /\ Ciberdroide Inform�tica (Tienda de Linux)
\\W// <<< http://www.ciberdroide.com >>>
_|0 0|_
+-oOOO--(___o___)--OOOo----------------------------------------------------+
| . . . . U U . . . . Antonio Castro Snurmacher [EMAIL PROTECTED] |
| . . . . . . . . . . |
+()()()----------()()()----------------------------------------------------+
| *** 1.700 sitios clasificados por temas sobre Linux en ***Donde_Linux*** |
| <<< http://www.ciberdroide.com/misc/donde/dondelinux.html >>> |
+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+