Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi ZEOS/MySQL Problem mit Transaktionssperre (https://www.delphipraxis.net/54350-zeos-mysql-problem-mit-transaktionssperre.html)

steirer 2. Okt 2005 17:59

Datenbank: mysql • Zugriff über: Zeos

ZEOS/MySQL Problem mit Transaktionssperre
 
Hallo,

ich habe folgendes Problem:

Wenn ich über 2 Programmaufrufe eine Änderung eines Datensatzes vornehme, überschreiben sich diese gegenseitig. Grundsätzlich sind Inno-DB-Tabellen ja transaktionssicher, also mache ich offenbar was falsch.
Folgende Einstellungen habe ich vorgenommen:

Delphi-Quellcode:
  object DB1: TZConnection
    Protocol = 'mysql'
    HostName = 'localhost'
    Port = 0
    Database = 'ware'
    User = ''
    Password = ''
    Catalog = 'ware'
    AutoCommit = True
    ReadOnly = False
    TransactIsolationLevel = tiRepeatableRead
    Connected = True
    AfterConnect = DB1AfterConnect
    SQLHourGlass = True
    Left = 8
    Top = 16
  end
.
.
.
.

  object LK: TZQuery
    Connection = DM1.DB1
    CachedUpdates = False
    AfterPost = LKAfterPost
    RequestLive = True
    SQL.Strings = (
      'select * from LKopf'
      'WHERE lsnr = :lsnr'
      'FOR UPDATE'
      '')
    ParamCheck = True
    Params = <
      item
        DataType = ftUnknown
        Name = 'lsnr'
        ParamType = ptUnknown
      end>
    ShowRecordTypes = [usUnmodified, usModified, usInserted]
    DataSource = LKSALL
    UpdateMode = umUpdateChanged
    WhereMode = wmWhereKeyOnly
    Options = [doCalcDefaults]
    Left = 341
    Top = 60
    ParamData = <
      item
        DataType = ftUnknown
        Name = 'lsnr'
        ParamType = ptUnknown
      end>
Ich habe mich auch schon herumgespielt mit DB1.autocommit:= false; und DB1.starttransaction in lkbeforeedit(); DB1.commit in lkafterpost(); aber das lässt mich den Datensatz im zweiten Programmaufruf nicht einmal anzeigen (db-connection bekommt irgendwann ein timeout).

Habt ihr Ideen,wass ich falsch mache?

Danke für eure Antworten!


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