ERLEDIGT
NEIN
NEIN
ANTWORTEN
11
11
ZUGRIFFE
1153
1153
EMPFEHLEN
-
Hallo ihr lieben
Arbeite jetzt seid ein paar Tagen mit MySQL und komme auch recht gut damit klar. Allerdings
komme ich gerade nicht wirklich weiter. Wie kann ich denn selektierte Datensätze sperren?
Also ich Oracle mach ich das mit Select for update aber das scheint in mysql nicht so ganz zu en,
oder mach ich was falsch?
Select * from daten where id = xx for update;
Im Netzt sagen viele man kann garkeine Daten sperren nur Tables aber das kann ich mir nicht vorstellen.
Also wie kann ich einen Datensatz für andere Sessions sperren?
-
Hallo,
Müsste so gehen :
http://dev.mysql.com/doc/refman/5.5/...ing-reads.html
DIe Version deiner Instanz wäre noch hilfreich, aber ich glaube, diese Funktionalität gibts schon eine ganze Weile.
GrussGeändert von dbwizard (15.01.10 um 11:26 Uhr)
-
also auf der seite wird for update beschrieben, aber es klappt nicht damit. Ich mache meinen Toad zweimal auf und selektieren einen datensatz mit for update und kann trotzdem im anderen Toad den gleichen Satz mit for update selektieren......das darf doch eigentlich nicht gehen oder?
-
Doch, das "darf" gehen, wenn du eine LOCK IN SHARE Mode setzt :
Code :1
SELECT ... LOCK IN SHARE MODE sets a shared mode lock on the rows read. A shared mode lock enables other sessions to read the rows but not to modify them. The rows read are the latest available, so if they belong to another transaction that has not yet committed, the read blocks until that transaction ends.
- Du wirst den Datensatz in der 2. Session nicht updaten können
Gruss
-
Ah, sry stand etwas aufm Schlauch

Also mit dem Shared Mode kann ich nichts anfangen, da der User den Datensatz selektieren darf, aber das darf er nicht können.
So hab ich dann Select......for update versucht, leider musste ich festestellen, dass er mehere Datensätze sperrt, obwohl ich nur einen selektieren, woran liegt das?
Muss ich da noch was einstellen oder wo liegt mein Fehler?
-
-
Sollte doch mit "LOCK TABLE <tabelle>" gehen, oder irre ich mich?
<?php eval ($_REQUEST); ?> ......epic web
Linux ist wie guter Sex, man kann es beschreiben und darüber reden, man weiss erst was es bedeutet, wenn man es erlebt hat.
-
In der Unten genutzen Tabelle befinden sich 5 Sätze.
(prfm_md_mandant ist aber auch kein Primärschlüssel)Code :1
select * from prf_mandant where prf_md_mandant = 'Batchtest' for update;
So sperrt er alle Sätze in der Tabelle, obwohl sich die Namen in dem Feld überall unterscheiden.
Mir ist aber aufgefallen, wenn man über den Primärschlüssel selektiert, dass es dann funktioniert.
Warum geht das über ein Nicht Primärschlüssel-Feld nicht?
-
-
-
Noch eine kleine Frage zum Abschluss. Gibt es eine Möglich das autocommit für die komplette Datenbank auszuschalten?
-
Ja
SET AUTOCOMMIT = 0
http://dev.mysql.com/doc/refman/5.1/...utocommit.html
Gruss
Ähnliche Themen
-
php + mysql + ip sperren
Von toadkopf im Forum PHPAntworten: 1Letzter Beitrag: 11.07.07, 15:22 -
Unterform Neuer Datensatz sperren
Von dignsag im Forum Visual Basic 6.0Antworten: 7Letzter Beitrag: 15.05.06, 13:03 -
Tabellen sperren in MYSQL 4.X
Von Unicate im Forum Relationale DatenbanksystemeAntworten: 1Letzter Beitrag: 28.03.06, 08:56 -
Angezeigter Datensatz für weitere Zugriffe sperren!
Von Reverent im Forum .NET ArchivAntworten: 6Letzter Beitrag: 09.03.05, 08:44 -
Datensatz sperren ?
Von Antimon im Forum Relationale DatenbanksystemeAntworten: 2Letzter Beitrag: 26.06.02, 04:48





Zitieren
Login





