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?
 
G

Guest

Gast
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.
 

klattiator

Mitglied
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:
 
M

maki

Gast
>> 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.
 
M

maki

Gast
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.
Ähnliche Java Themen
  Titel Forum Antworten Datum
berserkerdq2 Was kann passieren, wenn ich in java einstelle, dass der Fremdschüssel ein Attribut ist, welches selber kein Primärschlüssel ist? Datenbankprogrammierung 4
G MySQL JDBC Metadaten auslesen aus .accdb -> Primärschlüssel manchmal erkannt manchmal nicht Datenbankprogrammierung 3
T JPA: Nach String statt Primärschlüssel suchen Datenbankprogrammierung 9
C Hibernate ManyToMany zusammengesetzter Primärschlüssel, problem. Datenbankprogrammierung 3
G INT-Feld & Primärschlüssel - wie fülle ich dieses Feld mit "nichts"? Datenbankprogrammierung 4
L primärschlüssel auslesen Datenbankprogrammierung 6
M Auto Primärschlüssel ? Datenbankprogrammierung 2
N updateXXX() nur mit Primärschlüssel? Datenbankprogrammierung 3
R Primärschlüssel herausfinden Datenbankprogrammierung 5
P Primärschlüssel direkt nach der Eingabe wieder auslesen Datenbankprogrammierung 7
T Spring MongoDB: Prüfen ob bereits eine Email existiert Datenbankprogrammierung 15
zhermann H2 DB prüfen od sie neu ist Datenbankprogrammierung 4
B SQL-Statement Prüfen ob eine Spalte einen Wert enthält Datenbankprogrammierung 2
E Kann man in DB2 gegen ein XML-Schema prüfen? Datenbankprogrammierung 1
D MySQL DB Abfrage Prüfen Datenbankprogrammierung 10
H JDBC prüfen ob Table existiert Datenbankprogrammierung 3
A SQL-Statement prüfen Datenbankprogrammierung 3
F HSQLDB Auf vorhandenen Index prüfen Datenbankprogrammierung 3
C Prüfen, ob eine MySQL-Tabelle bereits existiert Datenbankprogrammierung 7
R Prüfen ob Tabelle existiert? Datenbankprogrammierung 4
K Prüfen ob Tabelle schon vorhanden Datenbankprogrammierung 7
G Tabel prüfen Datenbankprogrammierung 5
S connectionstatus prüfen Datenbankprogrammierung 9
K ResultSet prüfen,ob es leer ist oder ob vorhanden Datenbankprogrammierung 2

Ähnliche Java Themen

Neue Themen


Oben