Ich sehe die Sache auch ähnlich wie haentschman. Mit autarken Queries ist man auf der sicheren Seite, aber:
Ich habe nie Probleme mit datensensitiven Komponenten gehabt. Und ich vermute, dass die Erfahrungen von h etwas mit der
DB (herstellerspezifisch) zu tun haben und mit dem damaligen Stand der Technik (dieses Herstellers).
Stichwort 1:
Locking (row level locking). Das konnte vor Jahren nicht jeder (vielleicht auch heute noch nicht). Wenn ich also einen Datensatz ändere und dabei aus Mangel an Fähigkeiten dbseitig eine ganze Page gelockt wird, ist das sch..lecht.
Stichwort 2:
Clienttransaktionen; ich habe sowas nur spaßeshalber benutzt, default und produktiv war immer autocommit ohne eine einzige Zeile/Befehl, der aktiv Transaktionen verwaltet.
M.E. liegt es in der Natur der Sache, Transaktionshandling ist Serverangelegenheit. Übernimmt man das im Client, bricht man erstens das Prinzip und ist 2. auf die Qualität der Komponentenimplementierung und 3. auf die Fähigkeiten der
DB (siehe z.B. Stichwort1) angewiesen.
Beispiel: Hab gerade angefangen, einen Datensatz zu ändern und mein Programm schmiert ab. Die
DB hat nun ein Lock vom Client da rumfliegen, das garantiert nie ordentlich aufgelöst wird..
Stichwort 3:
Ressourcenverbrauch / konkurriende Zugriffe: Gewisse Hersteller von RDBMS waren nie dafür berühmt, dass sie es gut können. Darauf basiert m.E. eine ganze Technologie bei denen. Je weniger meine
DB kann, desto mehr muss ich sie schonen. Also bitte nur mal kurz Daten lesen oder updaten und dann wieder verschwinden. Dieses Prinzip ist zwar nicht unmodern, in mehrschichtigen Anwendungen ganz normal, bei bestimmten Anbietern hatte ich aber immer das "Gefühl", sie können es gar nicht viel besser.
Das nur mal so wild in Kürze.
Fazit: setzt man tatsächlich moderne RDBMS ein, kann man sehr wohl mit diesen Verfahren arbeiten. Ich gehe mal davon aus, dass viele
DB Hersteller in den letzten 15 Jahren an ihrer Technik gearbeitet haben. Rowlevellocking und andere tolle Sachen sollten mittlerweile unproblematisch (vorhanden) sein. Letztlich kann ich also mit dem datensensitiven Komponenten (Delphikomponenten oder auch Third Party) robuste Anwendungen in kurzer Zeit entwickeln, also das machen, womit Delphi mal "berühmt" wurde.