AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Lock conflict on no wait transaction ?
Thema durchsuchen
Ansicht
Themen-Optionen

Lock conflict on no wait transaction ?

Ein Thema von Hansa · begonnen am 6. Mär 2011 · letzter Beitrag vom 8. Mär 2011
Antwort Antwort
Seite 2 von 2     12   
Hansa

Registriert seit: 9. Jun 2002
Ort: Saarland
7.554 Beiträge
 
Delphi 8 Professional
 
#11

AW: Lock conflict on no wait transaction ?

  Alt 7. Mär 2011, 19:13
Jobo, es geht nicht um die Tatsache, dass es Transaktionen gibt. UNd ja, man kann die nicht weglassen. Eine DB braucht eine Transaction und ein Dataset auch usw. und basta. Die "erfinden" sich nicht von alleine eine Transaktion !

Das hier ist allerdings noch wichtig :

Fall2: Objekt ist jetzt für andere Benutzer gesperrt.
> eventuell zusätzlich oder aktualisierte Daten lesen
> Änderungen vornehmen und Posten
> Commit
> Ende
Vor allem das mit den "aktualisierte Daten lesen". Du meinst ja ungefähr so, oder ?
Delphi-Quellcode:
  DS.Close;
  DS.SelectSQL.Text := 'SELECT * FROM TESTTABLE WHERE NR='+IntToStr (Nr);
  DS.Open;
  if not DS.IsEmpty then begin
    DS.Edit;
// neu Lesen, wie weiter ????????
Mit 2. Dataset oder wie ? Mir wäre fast folgendes am liebsten. 3 Datasets. Erstens das Original, zweitens das, was gerade bearbeitet wird. Und dann noch vor dem endgültigen speichern ein neu gelesenes. Dann könnte man nämlich auch eventuell doch zwischenzeitlich gemachte Änderungen behandeln. Nur, wie am besten machen ?
Gruß
Hansa
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.858 Beiträge
 
Delphi 11 Alexandria
 
#12

AW: Lock conflict on no wait transaction ?

  Alt 7. Mär 2011, 22:25
Wegen der verwendeten Versionierung, sind Transaktionen in Firebird unabdingbar ( Alles läuft in Transaktionen)
Markus Kinzler
  Mit Zitat antworten Zitat
jobo

Registriert seit: 29. Nov 2010
3.072 Beiträge
 
Delphi 2010 Enterprise
 
#13

AW: Lock conflict on no wait transaction ?

  Alt 7. Mär 2011, 23:05
Welche Versionierung?
Ich kenne mich mit Firebird nicht aus.
Gibt es da besondere Anforderungen oder Gründe für Transaktionen auf Clientseite?
Gruß, Jo
  Mit Zitat antworten Zitat
Hansa

Registriert seit: 9. Jun 2002
Ort: Saarland
7.554 Beiträge
 
Delphi 8 Professional
 
#14

AW: Lock conflict on no wait transaction ?

  Alt 7. Mär 2011, 23:37
Welche Versionierung?
Wer nicht mal das weiss, für den ist klar :

Ich kenne mich mit Firebird nicht aus.
Soll jetzt hier etwa einer die absoluten Grundlagen erklären ? In einem Thema, wo es um Mehrplatzsysteme geht oder wie ? Oder wird "lediglich nur" gespammt ?
Gruß
Hansa
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.858 Beiträge
 
Delphi 11 Alexandria
 
#15

AW: Lock conflict on no wait transaction ?

  Alt 8. Mär 2011, 06:33
Firebird verwendet keinen Transaktionslog, wie andere DBMS, sondern Datensatzversionierung. Bei einem Update eines DS wird eine neuer DS mit höherer Version erzeugt. Andere Transaktionskontexte sehen aber noch den alten DS. Deshalb müssen auch Selects in Transaktionen laufen, um die richtige Version zu bekommen.

Hansa: Nach Gespamme sehen seine Antworten gar nicht aus.
Markus Kinzler
  Mit Zitat antworten Zitat
jobo

Registriert seit: 29. Nov 2010
3.072 Beiträge
 
Delphi 2010 Enterprise
 
#16

AW: Lock conflict on no wait transaction ?

  Alt 8. Mär 2011, 07:58
@markus: Danke, aber ich habe den Clou glaube ich noch nicht ganz verstanden. Geht es um Isolation Level?

Sorry Hansa, dass ich mich ohne tief greifende Firebird Kenntnisse in die Diskussion eingemischt hab.
In meiner Datenbank-Welt ist es immer so, dass ich mich darauf verlasse/ die Datenbank mir garantiert, dass nur ich in meiner Transaktion die geänderten Daten sehe und niemand anders. Wie das garantiert wird, ist mir dabei erstmal egal.

Was die "absoluten Grundlagen" angeht, die werden doch hier täglich vermittelt, oder?

Im übrigen gefällt mir das Forum, weil man hier nicht angemacht wird, wegen des Frageniveaus.
Gruß, Jo
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.858 Beiträge
 
Delphi 11 Alexandria
 
#17

AW: Lock conflict on no wait transaction ?

  Alt 8. Mär 2011, 08:02
Zitat:
@markus: Danke, aber ich habe den Clou glaube ich noch nicht ganz verstanden. Geht es um Isolation Level?
Nein, obwohl dieses damit zusammenhängt.

Es hat damit zu tun, wie der Firebird-Server Transaktionen/Änderungen innerhalb von Transaktionen verwaltet. Die meissten DBMS verwenden hierfür eine Logdatei, in der die Änderungen protokolliet werden; beim Rollback werden dieses dann in umgekehrter Reihenfolge umgekehrt.
Firebird verwendet hier für Versionierung, d.h. es wird beim Update der vorhandene Datensatz nicht geändert, sondern ein neuer mit einer höheren Version erzeugt. Das DBMS verwaltet diese Versionen und welche Version welcher Transaktionskontext sieht. Beim Rollback wird dann nur die Version des Kontext ungültig.
Markus Kinzler
  Mit Zitat antworten Zitat
jobo

Registriert seit: 29. Nov 2010
3.072 Beiträge
 
Delphi 2010 Enterprise
 
#18

AW: Lock conflict on no wait transaction ?

  Alt 8. Mär 2011, 08:40
OT:
Mmh, wie gesagt, ich verstehs nicht und es scheint mir um die Technik hinter einer Transaktion zu gehen.
Ich versteh auch nicht, wieso man um ein einziges Insert oder Update eine Clienttransaktion baut.
Aber das ist ja nicht mein Thread.
Gruß, Jo
  Mit Zitat antworten Zitat
Lemmy

Registriert seit: 8. Jun 2002
Ort: Berglen
2.380 Beiträge
 
Delphi 10.3 Rio
 
#19

AW: Lock conflict on no wait transaction ?

  Alt 8. Mär 2011, 09:00
Hi,

ganz einfach: weil da ne Menge schief gehen kann. Vergiss nicht, dass selbst durch ein einfaches Insert ne ganze Menge an Tabellen betroffen sein können (Triggers usw.).

Weiterhin: Wäre doch auch schlecht für dein Bankkonto, wenn die Bank für kleine Überweisungen unter 50€ auch keine Transaktionen einsetzen würde

Grüße
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 2     12   


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 12:27 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz