Primärschlüssel auf Existenz prüfen

Status
Nicht offen für weitere Antworten.

klattiator

Mitglied
Hallo zusammen,

und zwar würd ich gern wissen wie man in einer db-tabelle prüfen kann, ob ein primärschlüssel bereits vorhanden ist. eigentlich dachte ich ja, es wird eine SQLException geworfen, wenn ich einen Datensatz mit einem primärschlüssel abspeicher, der bereits vorhanden ist, aber offenbar ist dem nicht so...

ich hatte mir überlegt folgende abfrage zu machen:
Code:
String query = "select BauID FROM Baustellen WHERE BauID='" + bauid + "';";
und dann im ResultSet prüfen ob dieses leer ist. ich hab nur nicht rausgekriegt wie ich das prüfen kann...

hat da vielleicht jemand ne idee? oder gibts da noch einen andern weg?
 
Code:
ResultSet rs = ...
if( ! rs.next() )
{
   PK nicht vorhanden
}

Jetzt mal unabhängig von dem "Wie", wozu brauchst du es? Doch nicht, um PKs zu generieren, oder?
Verwende Sequenzen oder Identity-Columns. Alles andere ist Poker in einer Mehrbenutzerumgebung.
Die SQL Exception beim Versuch gleichen PK erneut zu speichern kommt erst beim Commit.
 
Also ich arbeite mit einer access-db. Und für den Fall, dass der Benutzer die Baustellen-Nr ändert, muss ich gewährleisten, dass diese noch nicht vorhanden ist.
Was sind denn Sequenzen, bzw. Identity-Columns? Hab mich jetzt noch nicht so intensiv mit Datenbanken beschäftigt :wink:
 
>> Hab mich jetzt noch nicht so intensiv mit Datenbanken beschäftigt
Solltest du machen!

Fachliche DB Schlüssel sind miese Schlüssel, die einzig wahren sind technische Schlüssel.
 
Technische Schlüssel sind rein technisch, zB. von der DB generierte, haben nix mit den fachlichen Abstraktionen zu tun und können daher auch nicht vom User eingegeben werden.

Schlüssel dürfen sich per Definition nicht ändern.

Es reicht wenn du deinen "fachlichen Schlüssel" als unique deklarierst, jedenfalls darf dieser nie in der DB als Primärschlüssel verwendet werden.

Wenn du das so gemacht hättest, wäre es gar kein Problem wenn der User die Baustellen-Nr ändert und die DB würde automatisch einen Fehler zeigen wenn jemand versucht 2 mal diegleiche Baustellen-Nr einzugeben.
 
Status
Nicht offen für weitere Antworten.

Zurück
Oben