![]() |
Dantensätze mit mySQL locken
Ich habe eine mySQL Datenbank, sie läuft zwar lokal aber aus reinem Interesse: Wie sperre ich einen Datensatz damit nicht zwei Clients ihn gleichzeitig ändern können?
|
Re: Dantensätze mit mySQL locken
MySQL braucht eigentlich kein Locking, obwohl es keine Transaktionen kennt (zumindest die Standard Tabellen können keine; mit InnoDB sieht das schon anders aus). MySQL arbeitet mit Lese- und Schreibthreads und macht Table Locking (siehe auch
![]() Du kannst das Problem auch lösen indem Du einen Versionszähler in Deine Tabelle einbaust:
SQL-Code:
Bei einem INSERT wird die Version auf 1 gesetzt, bei einem UPDATE machst Du das einfach so:
create table kunde (
id integer not null, version integer not null default 1, name varchar(60) )
SQL-Code:
Dadurch das Du immer auf eine bestimmte Version prüfst kannst Du Konflikte mit anderen Anwendungen vermeiden.
update kunde
set name="Neuer Name" where id = 100 and version = 1 Gruß, Marcel |
Re: Dantensätze mit mySQL locken
Hi!
Musst du die Version nicht noch hochzählen?
SQL-Code:
Mamphil
update kunde
set name="Neuer Name", version = version + 1 where id = 100 and version = 1 |
Re: Dantensätze mit mySQL locken
Zitat:
|
Re: Dantensätze mit mySQL locken
Zitat:
Gruß, Marcel |
Alle Zeitangaben in WEZ +1. Es ist jetzt 12:26 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 by Thomas Breitkreuz