# MySQL Eindeutigkeit



## Dagobert (12. Mai 2009)

Guten Abend,

Ich habe gerade folgende Frage:

Ich habe eine Tabelle in meiner SQL Datenbank die als Primary Key ein ID Feld verwendet. Nun sind aber noch Felder wie Benutzername und Email-Adresse die auch eindeutig sein sollen. Wie bekomme ich das hin? Wenn ich einen zusammen gesetzten Primary Key habe hab ich dies ja nicht sicher gestellt. Ich kann dann doch z.B. die beiden Einträge haben?:

ID/Name/Email
1/Test/test
2/Test/test

Aber ich möchte das sich der Name auch nicht zwei mal verwenden lässt. Wie stelle ich dies in MySQL / SQL ein?

mfg. Dagobert


----------



## SvenK (12. Mai 2009)

Möchtest du die Eindeutigkeit in nur einer Spalte haben, kannst du beim CREATE TABLE die Option UNIQUE für die entsprechende Spalte setzen.

Möchtest du die Kombination aus Vor- und Nachname eindeutig machen, kannst du entweder den Primarykey auf beide Spalten setzen (also ohne ID, was du aber denke ich mal nicht willst) oder du erstellst einen Index über beide Spalten und setzt den auf UNIQUE

Infos dazu gibt es in der MySQL-Doku:

MySQL :: MySQL 5.1 Reference Manual :: 12.1.17 CREATE TABLE Syntax

MySQL :: MySQL 5.1 Reference Manual :: 12.1.13 CREATE INDEX Syntax


----------



## Dagobert (12. Mai 2009)

Danke ich denke du hast mir sehr weitergeholfen.

Werde es gleich mal ausprobieren.

mfg. Dagobert


----------



## Dagobert (12. Mai 2009)

Noch eine kleine Frage

Wirft unique eine Exception falls schon ein eintrag exestiert?
Und wenn ja welche muss ich abfangen?

mfg. Dagobert


----------



## bronks (13. Mai 2009)

Dagobert hat gesagt.:


> Wirft unique eine Exception falls schon ein eintrag exestiert?


Ja! 


Dagobert hat gesagt.:


> Und wenn ja welche muss ich abfangen?


SQLException


----------



## Dagobert (13. Mai 2009)

hm... keine genauer definierte exception? oO
das ist ja doof naja aber dann wohl nich zu ändern
vielen Dank

mfg. Dagobert


----------



## tfa (13. Mai 2009)

Dagobert hat gesagt.:


> hm... keine genauer definierte exception? oO



SQLException hat einen Error Code. Den kannst du abfragen. Die Bedeutung ist natürlich produktabhängig.
Wenn du ein ORM-Framework wie Hibernate verwendest, werden die SQLExceptions automatisch in "schönere" Exceptions gekapselt.


----------

