"REFERENCES" and UNIQUE

From: Michelle Konzack <linux4michelle(at)freenet(dot)de>
To: pgsql-general <pgsql-general(at)postgresql(dot)org>
Subject: "REFERENCES" and UNIQUE
Date: 2006-01-04 18:52:43
Message-ID: 20060104185243.GO2860@freenet.de
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-general

Hello,

I get the following error:

__( 'stdin' )_________________________________________________________
/
| psql:omegasector.sql:125: ERROR: there is no unique constraint matchi
| ng given keys for referenced table "cities"
\______________________________________________________________________

and after puzzeling arround what happen, I know it.

__( '/home/michelle.konzack/.pgsql/omegasector.sql' )_________________
/
<snip>
| CREATE TABLE countries (
| serno int NOT NULL UNIQUE,
| isocode varchar(2) NOT NULL UNIQUE,
| EN text NOT NULL,
| DE text NOT NULL,
| FR text NOT NULL
| );

<snip>

| CREATE TABLE cities (
| serno int NOT NULL UNIQUE,
| country varchar(2) NOT NULL REFERENCES countries (isocode),
| EN varchar(30) NOT NULL,
| DE varchar(30) NOT NULL,
| FR varchar(30) NOT NULL
| );

<snip>

| CREATE TABLE members (
| serno int NOT NULL,
| version int NOT NULL,
| dt timestamp NOT NULL,
| editor int NOT NULL,
| editor_dt timestamp NOT NULL,
| subject varchar(40) NOT NULL,
| sdesc varchar(300) NOT NULL,
| description text NULL,
| photos text NOT NULL,
| timeline text NULL,
| dossiers text NULL,
| firstname varchar(30) NOT NULL,
| middlenames varchar(60) NULL,
| lastname varchar(30) NOT NULL,
| fullname varchar(120) NOT NULL,
| address1 varchar(30) NOT NULL,
| address2 varchar(30) NULL,
| street varchar(30) NOT NULL,
| streetno varchar(6) NULL,
| city varchar(30) NOT NULL REFERENCES cities (EN),
| zip varchar(6) NULL,
| country varchar(2) NOT NULL REFERENCES countries (isocode),
| telephon varchar(24) NULL,
| fax varchar(24) NULL,
| email varchar(60) NOT NULL,
| url varchar(100) NULL
| );
<snip>
\______________________________________________________________________

OK, it does not work, because "cities.EN" is not UNIQUE. And yes, it
can not be UNIQUE, because sometimes a cityname exist several times.

Is there a solution for this problem?

Data for "members" should only accepted if there is a minimum of one
match in "cities.EN" and it must not be UNIQUE.

Thanks and happy new year
Michelle

--
Linux-User #280138 with the Linux Counter, http://counter.li.org/
##################### Debian GNU/Linux Consultant #####################
Michelle Konzack Apt. 917 ICQ #328449886
50, rue de Soultz MSM LinuxMichi
0033/3/88452356 67100 Strasbourg/France IRC #Debian (irc.icq.com)

Responses

Browse pgsql-general by date

  From Date Subject
Next Message Jaime Casanova 2006-01-04 19:24:14 Re: Unique transaction ID
Previous Message John DeSoi 2006-01-04 18:51:07 Re: inserting many rows