Doppelte Eingaben einer Datenbank abfangen?

5 Antworten

Frei übersetzt in SQL aber von dir noch anzupassen:

INSERT INTO personal
(username, value, ... )
SELECT expression1, expression2, ...
FROM source_tables
[WHERE conditions];

Conditions könnte so aussehen (Pseudocode ich hasse Java):

Var Username="Gustav Gans"
Var Value="Pattern"
@ = New Con DB Constr
@ Param Username ($Username)
@ Param Value ($Value)

@ Execute @ && X0R
Woher ich das weiß:Berufserfahrung

Unique Contraint über beide Spalten.

(Prinzipiell könnte man auch zuvor ein query machen, dann sollte beides aber in eine Transaktion.)

Auf Datenbankseite könntest du dies z.B. mit einem Foreign Key oder Unique Index lösen. Dann bekommst du eien Fehlermeldung, wenn du einen doppelten Wert einfügen willst.

Ich würde dies aber bereits vorher in Java abfangen und dort per DB-Abfrage prüfen, ob es den Eintrag schon gibt. Dann eine Meldung an den User, dass er einen anderen Wert eingeben muss.

Woher ich das weiß:Berufserfahrung – IT Support, Studium & Hobby
CrazyChicken334 
Fragesteller
 26.05.2022, 11:14

Ja, das ist wahrscheinlich die beste Lösung! Danke für deine Hilfe!

0

Wenn Werte einzigartig sein sollen, dann lass das doch die Datenbank übernehmen über einen entsprechenden Constraint bzw. einen Unique Index.

Woher ich das weiß:Berufserfahrung – Softwareentwickler/Projektleiter seit 2012
CrazyChicken334 
Fragesteller
 26.05.2022, 11:15

Und wie mach ich das bei zwei Werten?

("Nur wenn Benutzername und value gleich")

0
apachy  26.05.2022, 11:29
@CrazyChicken334
ALTER TABLE table_name
ADD CONSTRAINT constraint_name UNIQUE (benutzername, value);
2
Von einem Experten bestätigt

on client.post(){

if post.content equals post.last.content(){

skip()

}

}

Woher ich das weiß:Studium / Ausbildung
CrazyChicken334 
Fragesteller
 26.05.2022, 02:10

Nein, es soll ja schauen, ob es in der Datenbank schon vorhanden ist.
(Also 1 Tag danach soll es die Daten immernoch nicht eingeben können)

1