Welchen String benutze ich am besten für diese Aufgabe

xxsteambroxx

Benutzer
Beiträge
5
Guten Tag,

Mein Problem sieht aus wie Folgt:

Ich habe eine Gästebuchwebsite, auf der Leute sich eintragen können, und Ihre Daten werden direkt in eine Oracle SQL Datenbank eingeschrieben.
Nun habe ich ein Spalte Namens "ZIPCODE" in meiner Datenbank "ZIPCODE", und möchte nicht das ein redundanter Eintrag angelegt wird wenn die vom User eigegebene Postleitzahl schon existiert.
Wie mache ich das am besten? Ich habe es schon mit If-Else Klauseln versucht aber bisher ohne erfolg.

Freundliche Grüße
SteamBro
 
Werbung:
erstelle einfach einen unique-constraint auf dieser Spalte.

Code:
test=# create table xxstreambroxx(zip text unique);
CREATE TABLE
test=*# insert into xxstreambroxx values ('12345');
INSERT 0 1
test=*# insert into xxstreambroxx values ('23456');
INSERT 0 1
test=*# insert into xxstreambroxx values ('12345');
FEHLER:  doppelter Schlüsselwert verletzt Unique-Constraint »xxstreambroxx_zip_key«
DETAIL:  Schlüssel »(zip)=(12345)« existiert bereits.
test=*#

PostgreSQL, sollte Oraggle aber auch können.
 
Werbung:
das geht übrigens auch nachträglich:

Code:
test=# create table xxstreambroxx(zip text);
CREATE TABLE
test=*# alter table xxstreambroxx add constraint zip_unique unique (zip);
ALTER TABLE
test=*# \d xxstreambroxx
          Table "public.xxstreambroxx"
 Column | Type | Collation | Nullable | Default
--------+------+-----------+----------+---------
 zip    | text |           |          |
Indexes:
    "zip_unique" UNIQUE CONSTRAINT, btree (zip)

aber nur, wenn es nicht schon zu spät ist:

Code:
test=*# rollback;
ROLLBACK
test=# create table xxstreambroxx(zip text);
CREATE TABLE
test=*# insert into xxstreambroxx values ('12345');
INSERT 0 1
test=*# insert into xxstreambroxx values ('12345');
INSERT 0 1
test=*# alter table xxstreambroxx add constraint zip_unique unique (zip);
FEHLER:  konnte Unique Index »zip_unique« nicht erstellen
DETAIL:  Schlüssel (zip)=(12345) ist doppelt vorhanden.
test=*#
 
Zurück
Oben