Entwickler-Ecke

Datenbanken (inkl. ADO.NET) - MySQL Transaction & LOCK IN SHARE MODE


flyhigh83 - Di 16.11.10 15:20
Titel: MySQL Transaction & LOCK IN SHARE MODE
Hi,

ich bin gerade am versuch die Transactionen sauber zu gestalten und jenach aufgerufenen Datensatz ein LOCK IN SHARE MODE zu setzten.

Meine Vorraussetzungen dafür sind eine MYSQL InnoDB Datenbank. (MySam unterstützt meines wissen nach nur LOCK TABLE)
Visual Studio 2010 und über den MySQL Connector eine Datenbankverbindung hergestellt.

Zu meinem Problem oder Frage.
Wie kann ich am besten den aufgerufenen Datensatz schützen. Also wo muss ich den Code

C#-Quelltext
1:
START TRANSACTION;                    


C#-Quelltext
1:
SELECT ... LOCK IN SHARE MODE;                    


einfügen.

Bei meiner bisherrigen Recherche bin ich noch auf einige Seiten gestoßen, welche mir aber bisher nicht weiterhelfen konnten.

http://msdn.microsoft.com/de-de/library/ms978457.aspx
http://msdn.microsoft.com/en-us/library/5ha4240h.aspx
http://msdn.microsoft.com/de-de/library/ms172146%28VS.90%29.aspx

Ach so eines noch vorab.

Wenn ich aus PHPmyAdmin oder sonst wo die Transaction durchführe funktioniert dies sauber.

hier das Beispiel (http://dev.mysql.com/doc/refman/5.1/de/innodb-lock-modes.html)

Ach so ich vermute mal das ich das in dem DataSet Designer irgendwo einbauen muss (DataSet.Designer.cs)?

Dort stehen ja die einzelnen SQL Anweisungen über select etc. Meine vermutung ist aber das es nicht so einfach geht, da die Selects alle jeweils ohne "WHERE" Klausel auskommen. Somit würde ich ja nicht den einzelnen Datensatz der Datenbank zurückmelden zum Sperren sondern dann auch wieder die komplette Tabelle

Kann mir jemand irgend welche Ansätze oder Tutorials sagen.?

Danke


stendate - Do 23.12.10 00:35

Darum würde ich mich nicht selber kümmern, dafür sind ja die Datenbank-Provider da. Unter [1] gibt es bei "Example 17-17" ein schönes Beispiel.

[1] http://book.opensourceproject.org.cn/lamp/mysql/mysqlstored/opensource/0596100892/mysqlspp-chp-17-sect-1.html