Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi Lock Tables mit ZEOS (https://www.delphipraxis.net/12670-lock-tables-mit-zeos.html)

Mirotux 2. Dez 2003 09:08


Lock Tables mit ZEOS
 
hallo,

ich benutze zeos 5.3.4 und mysql 3.23.42-nt.
ich versuche nun mit

qrMain.SQL.Text :='LOCK TABLES jobordernr READ, inbound READ ;';
qrMain.ExecSql ;

die tabellen 'jobordernr' und 'inbound' zu sperren, um zu verhindern, dass
andere user zeitgleich werte verändern können.

Danach wird wieder in die DB geschrieben:

qrMain.SQL.Text := 'INSERT INTO jobordernr (type, number , owner) VALUES (:J1, :J2, :J3 ) ;';
qrMain.Params[0].Value := cmbTypeInbound.Text ;
qrMain.Params[1].Value := edNumberInbound.Text ;
qrMain.Params[2].Value := cmbOwnerInbound.Text ;
qrMain.open;

bei der ausführung wird aber immer eine fehlermeldung ausgegeben:

Exception der Klasse EDatabaseError aufgetreten. Meldung: 'Table 'jobordernr'
was locked with a READ lock and can't be updated'.

Das sollte aber eigentlich für die anderen gelten und nicht fuer mich, oder ?

Wenn ich die tabellen mit WRITE sperre passiert garnichts,
andere user koennen die daten aendern.

hat jemand erfahrung mit diesem problem gesammelt ?

dank im voraus

Mirotux 5. Dez 2003 08:39

Re: Lock Tables mit ZEOS
 
hallo forum,

ich habe das gefühl, das ich mit dieser frage hier kein erfolg haben werde.

ich habe deshalb in einem anderen forum (spotlight) die gleiche frage gestellt.

nichts fuer ungut, aber ich brauche dringend einen lösungsansatz.

gruss

Bernhard Geyer 5. Dez 2003 10:43

Re: Lock Tables mit ZEOS
 
Hallo Mirotux, nur nicht verzagen :wink:

Der Standart-Tabellentyp von MySQL unterstützt keine Transaktionen. Evtl. lößt sich dein Problem wenn Du den Tabellentyp auf den INNODB-Tabellentyp umstellst und dort mittels StartTransaction und EndTransaction arbeitest. Dann dürfte die LOCK TABLES-Anweisung unnötig sein da MySQL über die Transaktionssteuerung alles erledigen dürfte.

Mirotux 5. Dez 2003 10:59

Re: Lock Tables mit ZEOS
 
danke fuer deine antwort

kann es sein, das meine mysql version 3.23.42 keine INNODB unterstützt ?
es kann doch nicht so schwer sein eine tabelle fuer andere
zu sperren. scheint doch ein bug von zeos (oder mir )zu sein.

gruss
joerg

Memo 5. Dez 2003 11:51

Re: Lock Tables mit ZEOS
 
Zitat:

Zitat von Mirotux
kann es sein, das meine mysql version 3.23.42 keine INNODB unterstützt ?

Ja. Das wurde erst ziemlich spät eingeführt. Nimm einfach eine neuere Version >3. Die Unterstützen InnoDB

Bernhard Geyer 6. Dez 2003 12:39

Re: Lock Tables mit ZEOS
 
Die Max-Versionen von mySQl 3.x müssten InnoDB unterstützen. Bei 4.x-Versionen sind sie auch in der Standardversion dabei.

Berserker 7. Dez 2003 18:48

Re: Lock Tables mit ZEOS
 
Hallo Mirotux.

Doch es gibt eine Lösung für dein Problem, das ich auch hatte.
Da ja MySQL keine Record-Locks supportet musste ich mir halt was aus dem FF leiern.

Du kannst einen VIRTUELLEN LOCK erzeugen.
Jedoch musst du dann immer vorher Prüfen ob dieser Lock vorhanden ist oder nicht.
Wenn er vorhanden ist, dann darf keine Bearbeitung zugelassen werden.

Kontaktiere mich einfach mal. Dann kann ich dir den Code schicken.

Am besten per ICQ 70049778.
Bin eigentlich fast immer Online.

MfG, Ronny


Alle Zeitangaben in WEZ +1. Es ist jetzt 13:52 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