AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Race Conditions mit DBs vermeiden
Thema durchsuchen
Ansicht
Themen-Optionen

Race Conditions mit DBs vermeiden

Ein Thema von yankee · begonnen am 1. Jan 2008 · letzter Beitrag vom 4. Jan 2008
 
Benutzerbild von yankee
yankee

Registriert seit: 10. Mär 2004
1.134 Beiträge
 
Lazarus
 
#1

Race Conditions mit DBs vermeiden

  Alt 1. Jan 2008, 20:41
Datenbank: tut nichts zur Sache ;-) • Zugriff über: nur gedanklich :-P
Hi @ll,

ich habe folgednes Problem:
Eine Datenbank mit 2 Tabellen

Tabelle 1:
id INT
...

Tabelle 2:
tab1id INT
...

Also jeder Datensatz aus Tabelle 2 bezieht sich auf einen Datensatz in Tabelle 1. In Tabelle 2 soll es keine Datensätze geben, deren Feld tab1id sich nicht auf eine id aus der Tabelle 1 bezieht.

Jetzt will ich einen neuen Datensatz in Tabelle 2 einfügen. Die Tabelle 1 enthält aktuell nur einen Datensatz mit der id 42. Auf diesen soll sich der neue Datensatz aus Tabelle 2 beziehen. Mir ist auch klar, dass sich der neue Datensatz in Tabelle 2 auf den Datensatz mit der id 42 aus Tabelle 1 beziehen soll. Also könnte ich den neuen Datensatz einfach einfügen:
INSERT INTO tabelle2 (tb1id) VALUES (42) Jetzt habe ich aber das Problem, dass der Datensatz aus Tabelle 1 längst gelöscht sein könnte. Was tue ich um zu verhindern, dass der neue Datensatz eingefügt wird, wenn der Datensatz aus Tabelle 1 nicht mehr existiert? Einfach vorher nochmal mit
SELECT COUNT(*) FROM tabelle1 WHERE id=42 prüfen, ob der Datensatz noch existiert? Dadurch wird es schonmal extrem unwahrscheinlich, dass ich mir das genannte Problem einhandle, weil der Datensatz aus Tabelle 1 gelöscht werden müsste nachdem ich geprüft habe ob er existiert und bevor ich den neuen Datensatz einfüge.
Eine DB nehmen, die Fremdschlüssel beherscht, diese entsprechend definieren und alle Sorgen los sein?
Letzter Tipp: Drogen. Machen zwar nicht glücklich, geben einem aber wenigstens das Gefühl glücklich zu sein.

Have a lot of fun!
  Mit Zitat antworten Zitat
 


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 01:12 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz