Einzelnen Beitrag anzeigen

steirer

Registriert seit: 1. Dez 2004
Ort: Graz
7 Beiträge
 
#1

ZEOS/MySQL Problem mit Transaktionssperre

  Alt 2. Okt 2005, 17:59
Datenbank: mysql • Zugriff über: Zeos
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!
Peter Steger
  Mit Zitat antworten Zitat