AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

ADO Guru gesucht

Ein Thema von haentschman · begonnen am 12. Mär 2013 · letzter Beitrag vom 14. Mär 2013
 
Benutzerbild von sx2008
sx2008

Registriert seit: 15. Feb 2008
Ort: Baden-Württemberg
2.332 Beiträge
 
Delphi 2007 Professional
 
#2

AW: ADO Guru gesucht

  Alt 12. Mär 2013, 19:40
Tabelle mit "ID" als Autoinc. (PK) (der Rest ist eher uninteressant)
Man sollte keine AutoInc-Felder verwenden, wenn man den Wert für weitere Verarbeitung noch benötigt!

Zunächst muss man sich mal klarmachen, dass Tabellen ohne Primärschlüsselfeld nicht sicher sind, weil man einen bestimmten Datensatz nur über das eindeutige PK-Feld ändern oder löschen kann.
Code:
Farbe | Hersteller
blau  | VW
silber | BMW
blau  | VW
grau  | Daimler
In der Beispieltabelle gibt es 2 gleiche Datensätze.
Mit SQL gibt es keine Möglichkeit (!) nur einen dieser beiden Datensätze zu verändern oder nur einen davon zu löschen!

Schlussfolgerung
Tabellen ohne Primärschlüssel sind als "defekt" zu betrachten.

Bei einer Tabelle mit einem AutoInc-Feld als PK entsteht ein Problem:
Wenn mehrere Prozess in die gleiche Tabelle Datensätze einfügen,
wie kann dann ein Prozess herausfinden welcher Datensatz von ihm ist?
Da der Primärschlüssel das einzige sichere Erkennungsmerkmal für einen Datensatz ist, der Prozess aber den PK nicht kennt ist es mathematisch für einen Prozess unmöglich seinen gerade geschriebenen Datensatz wiederzuerkennen.

Schlussfolgerung
Autoinc-Felder darf man nur einsetzen wenn man den PK eines gerade eingefügten Datensatzes nicht benötigt.
Sobald aber der PK in einen anderen Tabelle als Fremdschlüssel benötigt wird ergeben sich Probleme.
Nur weil SDAC keinen Fehler erzeugt bedeutet das nicht, dass alles in Ordnung ist.

Mögliche Auswege:
Beim SQL Server kann man z.B. die Abfrage SELECT @@Identity ausführen um den zuletzt eingefügten PK zu erhalten.

Manchmal muss man etwas nachhelfen und das Property TField.AutoGenerateValue im Code einstellen
http://docs.embarcadero.com/products...rateValue.html
  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 05:35 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