Unique in einer mysql datenbank

Bleem

Gesperrt
wie überprüf ich bei einem formular das es zB: den user wenn er auf sendne schon in der mysql datenbank gibt ?

ich hab das Unique in der datejnbank aktiviert ?
ich will aber das der das den jedigen sagt :)


mfg bleem
 
Na Du fragst mit nem select ab, ob er schon existiert und wenn ja sagst Du ihm das.

Cu Major
 
wenn du da eine spalte als unique definiert hast kannst du natuerlich auch abfragen ob der INSERT geklappt hat, wenn nicht dann weisst du das der datensatz schon vorhanden ist. so sparst du dir das select ...
 
... oder das INSERT war einfach fehlerhaft, da weiss ich noch lange nicht, ob der User existiert. Nee, nee, das ist ziemlich unsauber, man sollte da schon ein vernünftiges Errorhandling einsetzen.

Cu Major
 
@Major

kommt drauf an wo man es einsetzt, kann auch sinnvoll sein ...

ich hab z.b. eine tabelle mit zuordnungen (ca. 2 mio. eintraege), um mir die selects zu sparen, da diese recht haeufig vorkommen wuerden und langsam sind ... wird einfach ein insert probiert, wenns nicht geklappt hat weiss ich definitiv, dass der datensatz schon vorhanden ist.

> INSERT war einfach fehlerhaft...
wann schlaegt ein INSERT denn fehl ?
wenn es einmal korrekt definiert ist und du weisst das das INSERT funktioniert, kann es hoechstens 4 gruende geben warum dies fehlschlaegt:

1. es wird versucht einen leeren datensatz einzufuegen
2. der datensatz (pk) ist schon vorhanden
3. die struktur der tabelle wurde geaendert (-> niemals short inserts benutzen ;))
4. keine datenbank verbindung

fall 1 und 3 kann ich schonmal vermeiden, bei 4 hab ich eh verloren und 2 passt mir doch wunderbar ;)

so unsauber ist das garnicht...
 
@gecko

im Prinzip hast Du Recht, auf alle Fälle ist es schnell (bei 2 Mio Einträge ;-) ), am geschickten ist, man prüft die INSERT-Fehlermeldung auf eine Unique-Meldung ab und ich bin beruhgt. (bzw. mein Perfektionistenherz :-))

Cu Major
 
aber du hast ja auch recht ;)
im prinzip ist es schon unsauber zu sagen: es hat nicht geklappt, also bist du schon drin!
 
Zurück