Lists: | pgsql-es-ayuda |
---|
From: | Oswaldo Hernández <listas(at)soft-com(dot)es> |
---|---|
To: | pgsql-es-ayuda(at)postgresql(dot)org |
Subject: | fk con parte de un campo |
Date: | 2006-08-02 09:47:08 |
Message-ID: | [email protected] |
Views: | Whole Thread | Raw Message | Download mbox | Resend email |
Lists: | pgsql-es-ayuda |
Hola a todos,
Estoy intentando crear una fk con parte de un campo:
CREATE TABLE pruebas.t1
(
c1 varchar(3) NOT NULL,
CONSTRAINT pk_t1 PRIMARY KEY (c1)
)
WITHOUT OIDS;
ALTER TABLE pruebas.t1 OWNER TO postgres;
CREATE TABLE pruebas.t2
(
c2 varchar(10) NOT NULL,
CONSTRAINT pk_t2 PRIMARY KEY (c2)
)
WITHOUT OIDS;
ALTER TABLE pruebas.t2 OWNER TO postgres;
soft-com=# ALTER TABLE pruebas.t2 ADD CONSTRAINT fk_t2_t1 FOREIGN KEY (substr(c2,1,3)) REFERENCES
pruebas.t1 (c1) ON UPDATE RESTRICT ON DELETE RESTRICT;
ERROR: syntax error at or near "(" en el carácter 67
LINEA 1: ...bas.t2 ADD CONSTRAINT fk_t2_t1 FOREIGN KEY (substr(c2,1,3)) ...
^
¿Es realmente un error de sintaxis? ó ¿no es posible hacer una fk de esta forma?
Gracias,
--
*****************************************
Oswaldo Hernández
oswaldo (@) soft-com (.) es
*****************************************
From: | "Linder Poclaba" <linder(dot)poclaba(at)gmail(dot)com> |
---|---|
To: | Oswaldo Hernández <listas(at)soft-com(dot)es> |
Cc: | pgsql-es-ayuda(at)postgresql(dot)org |
Subject: | Re: fk con parte de un campo |
Date: | 2006-08-02 13:36:38 |
Message-ID: | [email protected] |
Views: | Whole Thread | Raw Message | Download mbox | Resend email |
Lists: | pgsql-es-ayuda |
El día 2/08/06, Oswaldo Hernández <listas(at)soft-com(dot)es> escribió:
>
> Hola a todos,
>
> Estoy intentando crear una fk con parte de un campo:
>
>
> CREATE TABLE pruebas.t1
> (
> c1 varchar(3) NOT NULL,
> CONSTRAINT pk_t1 PRIMARY KEY (c1)
> )
> WITHOUT OIDS;
> ALTER TABLE pruebas.t1 OWNER TO postgres;
>
>
> CREATE TABLE pruebas.t2
> (
> c2 varchar(10) NOT NULL,
> CONSTRAINT pk_t2 PRIMARY KEY (c2)
> )
> WITHOUT OIDS;
> ALTER TABLE pruebas.t2 OWNER TO postgres;
>
>
> soft-com=# ALTER TABLE pruebas.t2 ADD CONSTRAINT fk_t2_t1 FOREIGN KEY
> (substr(c2,1,3)) REFERENCES
> pruebas.t1 (c1) ON UPDATE RESTRICT ON DELETE RESTRICT;
>
> ERROR: syntax error at or near "(" en el carácter 67
> LINEA 1: ...bas.t2 ADD CONSTRAINT fk_t2_t1 FOREIGN KEY (substr(c2,1,3))
> ...
> ^
>
> ¿Es realmente un error de sintaxis?
Si es un error de sintaxis, cuando defines llaves foraneas en FOREIGN
KEY(aquí va un atributo de la tabla) ejm: FOREIGN KEY(c2) y no así una valor
ó ¿no es posible hacer una fk de esta forma?
ALTER TABLE pruebas.t2 ADD CONSTRAINT fk_t2_t1 FOREIGN KEY (c2) REFERENCES
pruebas.t1 (c1) ;
algo así.
Saludos
> Gracias,
>
> --
> *****************************************
> Oswaldo Hernández
> oswaldo (@) soft-com (.) es
> *****************************************
>
> ---------------------------(fin del mensaje)---------------------------
> TIP 1: para suscribirte y desuscribirte, visita
> http://archives.postgresql.org/pgsql-es-ayuda
>
--
Linder Poclaba Lázaro.
Desarrollador Key Optimal Solutions KEYOS.
Usa Software Libre y obtiene tú libertad.
From: | "Marco Vinicio Jimenez Rojas" <viniciojr(at)gmail(dot)com> |
---|---|
To: | "Linder Poclaba" <linder(dot)poclaba(at)gmail(dot)com> |
Cc: | Oswaldo Hernández <listas(at)soft-com(dot)es>, pgsql-es-ayuda(at)postgresql(dot)org |
Subject: | Re: fk con parte de un campo |
Date: | 2006-08-02 15:26:22 |
Message-ID: | [email protected] |
Views: | Whole Thread | Raw Message | Download mbox | Resend email |
Lists: | pgsql-es-ayuda |
Hasta donde se una referencia foranea se hace a una columna o campo en la
tabla, si deseas hacer eso seria mejor que separe en dos columnas y asi
haces la referencia a la columna que necesitas.
2006/8/2, Linder Poclaba <linder(dot)poclaba(at)gmail(dot)com>:
>
>
>
> El día 2/08/06, Oswaldo Hernández <listas(at)soft-com(dot)es> escribió:
>
> > Hola a todos,
> >
> > Estoy intentando crear una fk con parte de un campo:
> >
> >
> > CREATE TABLE pruebas.t1
> > (
> > c1 varchar(3) NOT NULL,
> > CONSTRAINT pk_t1 PRIMARY KEY (c1)
> > )
> > WITHOUT OIDS;
> > ALTER TABLE pruebas.t1 OWNER TO postgres;
> >
> >
> > CREATE TABLE pruebas.t2
> > (
> > c2 varchar(10) NOT NULL,
> > CONSTRAINT pk_t2 PRIMARY KEY (c2)
> > )
> > WITHOUT OIDS;
> > ALTER TABLE pruebas.t2 OWNER TO postgres;
> >
> >
> > soft-com=# ALTER TABLE pruebas.t2 ADD CONSTRAINT fk_t2_t1 FOREIGN KEY
> > (substr(c2,1,3)) REFERENCES
> > pruebas.t1 (c1) ON UPDATE RESTRICT ON DELETE RESTRICT;
> >
> > ERROR: syntax error at or near "(" en el carácter 67
> > LINEA 1: ...bas.t2 ADD CONSTRAINT fk_t2_t1 FOREIGN KEY (substr(c2,1,3))
> > ...
> > ^
> >
> > ¿Es realmente un error de sintaxis?
>
>
> Si es un error de sintaxis, cuando defines llaves foraneas en FOREIGN
> KEY(aquí va un atributo de la tabla) ejm: FOREIGN KEY(c2) y no así una valor
>
>
> ó ¿no es posible hacer una fk de esta forma?
>
>
> ALTER TABLE pruebas.t2 ADD CONSTRAINT fk_t2_t1 FOREIGN KEY (c2) REFERENCES
> pruebas.t1 (c1) ;
>
> algo así.
>
> Saludos
>
> Gracias,
> >
> > --
> > *****************************************
> > Oswaldo Hernández
> > oswaldo (@) soft-com (.) es
> > *****************************************
> >
> > ---------------------------(fin del mensaje)---------------------------
> > TIP 1: para suscribirte y desuscribirte, visita
> > http://archives.postgresql.org/pgsql-es-ayuda
> >
>
>
>
> --
> Linder Poclaba Lázaro.
> Desarrollador Key Optimal Solutions KEYOS.
> Usa Software Libre y obtiene tú libertad.
>
--
---------------------------------
Vinicio Jimenez Rojas
TI DIPCR
-----------------------
CCACR.ORG
-----------------------
MVJR
From: | Alvaro Herrera <alvherre(at)commandprompt(dot)com> |
---|---|
To: | Oswaldo Hernández <listas(at)soft-com(dot)es> |
Cc: | pgsql-es-ayuda(at)postgresql(dot)org |
Subject: | Re: fk con parte de un campo |
Date: | 2006-08-02 19:32:39 |
Message-ID: | [email protected] |
Views: | Whole Thread | Raw Message | Download mbox | Resend email |
Lists: | pgsql-es-ayuda |
Oswaldo Hernández escribió:
> Hola a todos,
>
> Estoy intentando crear una fk con parte de un campo:
>
>
> CREATE TABLE pruebas.t1
> (
> c1 varchar(3) NOT NULL,
> CONSTRAINT pk_t1 PRIMARY KEY (c1)
> )
> WITHOUT OIDS;
> ALTER TABLE pruebas.t1 OWNER TO postgres;
>
>
> CREATE TABLE pruebas.t2
> (
> c2 varchar(10) NOT NULL,
> CONSTRAINT pk_t2 PRIMARY KEY (c2)
> )
> WITHOUT OIDS;
> ALTER TABLE pruebas.t2 OWNER TO postgres;
>
>
> soft-com=# ALTER TABLE pruebas.t2 ADD CONSTRAINT fk_t2_t1 FOREIGN KEY
> (substr(c2,1,3)) REFERENCES pruebas.t1 (c1) ON UPDATE RESTRICT ON DELETE
> RESTRICT;
>
> ERROR: syntax error at or near "(" en el carácter 67
> LINEA 1: ...bas.t2 ADD CONSTRAINT fk_t2_t1 FOREIGN KEY (substr(c2,1,3)) ...
> ^
>
> ¿Es realmente un error de sintaxis? ó ¿no es posible hacer una fk de esta
> forma?
Creo que la primera forma normal dice que no debes tener campos
multivaluados. Te sugiero separar c1 en varias columnas.
--
Alvaro Herrera http://www.CommandPrompt.com/
PostgreSQL Replication, Consulting, Custom Development, 24x7 support
From: | Oswaldo Hernández <listas(at)soft-com(dot)es> |
---|---|
To: | Alvaro Herrera <alvherre(at)commandprompt(dot)com> |
Cc: | pgsql-es-ayuda(at)postgresql(dot)org |
Subject: | Re: fk con parte de un campo |
Date: | 2006-08-03 08:38:43 |
Message-ID: | [email protected] |
Views: | Whole Thread | Raw Message | Download mbox | Resend email |
Lists: | pgsql-es-ayuda |
Alvaro Herrera escribió:
>
> Creo que la primera forma normal dice que no debes tener campos
> multivaluados. Te sugiero separar c1 en varias columnas.
>
Ok, Replanteare el diseño.
Gracias
--
*****************************************
Oswaldo Hernández
oswaldo (@) soft-com (.) es
*****************************************
From: | Oswaldo Hernández <listas(at)soft-com(dot)es> |
---|---|
To: | Marco Vinicio Jimenez Rojas <viniciojr(at)gmail(dot)com> |
Cc: | Linder Poclaba <linder(dot)poclaba(at)gmail(dot)com>, pgsql-es-ayuda(at)postgresql(dot)org |
Subject: | Re: fk con parte de un campo |
Date: | 2006-08-03 08:38:53 |
Message-ID: | [email protected] |
Views: | Whole Thread | Raw Message | Download mbox | Resend email |
Lists: | pgsql-es-ayuda |
Marco Vinicio Jimenez Rojas escribió:
> Hasta donde se una referencia foranea se hace a una columna o campo en
> la tabla, si deseas hacer eso seria mejor que separe en dos columnas y
> asi haces la referencia a la columna que necesitas.
>
Ok. Dividiré el campo.
Gracias.
--
*****************************************
Oswaldo Hernández
oswaldo (@) soft-com (.) es
*****************************************