RE: [pgsql-de-allgemein] Doppeleinträge in der postgres DB mit unique vermeiden

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

In response to

Responses

Browse pgsql-de-allgemein by date

  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