| 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: | 20060802193239.GG6019@alvh.no-ip.org |
| Views: | Whole Thread | Raw Message | Download mbox | Resend email |
| Thread: | |
| 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 | Date | Subject | |
|---|---|---|---|
| Next Message | Miguel de la Fuente | 2006-08-02 20:57:36 | Re: Desesperado con postgis |
| Previous Message | Sebastián Villalba | 2006-08-02 15:35:31 | Re: Necesito buscar duplicados |