Einzelnen Beitrag anzeigen

Benutzerbild von s.h.a.r.k
s.h.a.r.k

Registriert seit: 26. Mai 2004
3.159 Beiträge
 
#1

Transaktion für INSERT IF NOT EXIST

  Alt 9. Jul 2010, 15:10
Datenbank: Oracle • Version: 9.x • Zugriff über: AnyDAC
Hallo zusammen,

ich bin im Moment etwas am grübeln, ob folgendes funktioniert. Ich kenne mich mit Datenbanken zwar aus, aber leider nicht ausreichend, um mir selbst die Frage beantworten zu können. Google hat mir bisher auch nicht wirklich etwas brauchbares vor die Nase gesetzt.

Eines noch vorweg: ein INSERT IF NOT EXIST Konstrukt scheint es für Oracle 9.x nicht zu geben, ergo suche ich gerade nach einem anderen Weg und Transaktionen scheinen unter Umständen zu funktionieren -- zumindest glaube ich das im Moment

Hintergrund ist folgender: wenn mein Programm startet, so wird in der Datenbank nachgeschaut, ob der User schon mal eingeloggt war, d.h. es muss ein Eintrag mit dem Windows-Benutzername (ist der Primary Key dieser User-Tabelle) existieren. Wenn das noch nicht der Fall ist, so soll dieser Eintrag hinzugefügt werden, inkl. einem weiteren in einer anderen Tabelle.

Nun kann es aber ja passieren, dass ein User das Programm so ziemlich gleichzeitig zwei Mal ausführt und das dann unter Umständen Probleme bei der Abfrage und dem eventuellen Einfügen macht. Das will ich auf jeden Fall verhindern. Daher auch die Idee mit der Transaktion, wobei ich nicht weiß, ob das hier nicht doch zu Problemen führen kann. Ich weiß leider nicht, wie die Transaktionen intern gehandelt werden. Ist ein SELECT-Befehl in einer Transaktion mit drin!? Oder können diese sich überschneiden?!
»Remember, the future maintainer is the person you should be writing code for, not the compiler.« (Nick Hodges)
  Mit Zitat antworten Zitat