From: | "Andreas Bauer" <andreas_bauer(at)arcor(dot)de> |
---|---|
To: | "'Guido Neitzer'" <guido(dot)neitzer(at)gmail(dot)com> |
Cc: | <pgsql-de-allgemein(at)postgresql(dot)org> |
Subject: | RE: [pgsql-de-allgemein] Doppeleinträge in der postgres DB mit unique vermeiden |
Date: | 2006-11-10 12:14:38 |
Message-ID: | 000001c704c1$cb30a2f0$0200a8c0@neuenheim.homedns.org |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-de-allgemein |
Hallo Guido,
>>Bist Du sicher, daß Du das wirklich willst? Für mich klingt das nach einer
ziemlich schlechten Idee. Außer natürlich, Du kannst GARANTIEREN, daß Du nie
>>eine Person aufnehmen willst, die den Bedingungen nicht genügt.
>>Nur so aus Interesse: warum soll das so sein?
Na, ich will Doppeleinträge vermeiden. Vielleicht sollte das Feld title der
anderen t_Books Tabelle auch noch in CONSTRAINT UNIQUE
miteinbezogen werden. Das wäre dann schon ein sehr großer Zufall, wenn es
tatsächlich 2 identische Autorennamen, Nach- Und Vorname, und noch
2 identische Buchtitel gäbe, wodurch ein Autor dann durch dieses UNIQUE
eleminiert würde.
Die t_books sieht so aus:
create table t_books
(
bookid int4 primary key
default nextval('s_books'),
authorid int4 not null
references t_authors(authorid)
on delete cascade,
FOREIGN KEY (authorid) REFERENCES t_authors (authorid) ON UPDATE
CASCADE ON DELETE CASCADE,
title varchar(127) not null,
subtitle varchar(255)
);
On 11/10/06, Andreas Bauer <andreas_bauer(at)arcor(dot)de> wrote:
> Hallo NG,
>
> um Doppeleinträge in der postgres DB zu vermeiden, habe ich in meinem
> create table eingefügt:
> CONSTRAINT con1 UNIQUE (lastname,firstname)
>
> Wie kann ich den UNIQUE Befehl schreiben, dass die Datensätze nicht
> doppelt sind, bei denen die Bedingung erfüllt ist, dass der lastname
> "und" der firstname identisch sind, also wenn in einer Zeile Bauer
> Andreas als last- und firstname steht, dass Bauer und Andreas als
> first- und lastname nicht noch mal in einer Zeile der Tabelle
> eingetragen wird. Es kann ja auch eine andere Person den gleichen
> lastname, aber einen anderen firstname haben. Da würde der CONSTRAINT
> con1 UNIQUE (lastname,firstname) ja schon den lastname nicht zulassen,
> oder lieg ich da falsch? Geht das überhaupt mit UNIQUE, mit einer &
> Verknüpfung von den Feldern?
> Die pq-query Fehlermeldung von php:
> Warning: pg_query() [function.pg-query]: Query failed: ERROR:
> duplicate key violates unique constraint "con1" in Kann man die
> abschalten?
>
>
> Grüße
> Andreas
>
>
>
>
> create table t_authors
> (
> authorid int4 primary key
> default nextval('s_authors'),
> lastname varchar(31) not null,
> firstname varchar(31) not null,
> CONSTRAINT con1 UNIQUE (lastname,firstname)
>
> );
Grüße
Andreas
From | Date | Subject | |
---|---|---|---|
Next Message | Andreas Bauer | 2006-11-10 12:34:04 | Re: Do |
Previous Message | A. Kretschmer | 2006-11-10 12:13:01 | Re: Re |