# Einzelne Datenbankzeile schreibend sperren?



## t.stein (11. Okt 2010)

Hallo Zusammen,

ich wollte mal nachfragen, ob einem ein Konzept bekannt ist, einzelne Datenbankzeilen schreibend zu sperren? Es genügt mir nicht, einfach nur die update-Funktionen nicht zu implementieren. 

Datenbank: MySQL

gruß Thomas


----------



## fastjack (11. Okt 2010)

Transaktionen ?


----------



## t.stein (11. Okt 2010)

danke für die schnelle antwort. aber wie sollen mir transaktionen dabei helfen, eine einzelne zeile zu sperren?


----------



## fastjack (11. Okt 2010)

Mir fällt noch Lockverfahren ein. Du sperrst Datensätze, indem Du Tabelle, Id und Zeitstempel in einer separaten Locktabelle mitführst. Das Locken/Unlocken muß aber gesondert programmiert werden.


----------



## t.stein (11. Okt 2010)

Danke das geht in die richtige Richtung. Ich brauche dieses Konzept um gesetzliche Vorgaben einer revisionssicheren Datenbank zu erfüllen. Es gibt eine DB-Engine (ddengine), die diese Bestimmungen z. B. erfüllen. Ist aber etwas oversize, weil ich nur das Sperren einzelner Zeilen benötige. 

gruß


----------



## fastjack (11. Okt 2010)

Für MySQL ist das vielleicht noch interessant:

MySQL :: MySQL 5.5 Reference Manual :: 13.6.8.3 SELECT ... FOR UPDATE and SELECT ... LOCK IN SHARE MODE Locking Reads


----------



## VfL_Freak (11. Okt 2010)

Moin,

welche DB benutzt Du denn ???:L
Was genau möchtest Du mit der Sperre erreichen ???:L

Eigentlich sollte doch das von _fastjack_ beschriebene Verfahren reichen, um eine Zeile zu sperren ...
Also:
   Transaktion öffnen
   Zugriff auf DS mit Lock
   Transaktion schließen (oder ggf. zurückfahren)

Gruß
Klaus


----------



## t.stein (11. Okt 2010)

Hey Klaus,

es geht hier um das Thema revisionssichere Ablage von Daten. 

Folgendes Szenario:


 Per Email kommt eine Datei rein z.b ein File mit vielen Wert

 Diese Datei soll in der DB abgelegt werden

 Der Gesetzgeber verlangt jetzt, dass diese Datei nicht veränderbar sein darf

 Deswegen soll diese Spalte bzw. Tabelle schreibend gesperrt werden

gruß Thomas


----------



## maki (11. Okt 2010)

t.stein hat gesagt.:


> Hey Klaus,
> 
> es geht hier um das Thema revisionssichere Ablage von Daten.
> 
> ...


Sowas wie "für immer sperren" gibt es nicht.

Sorge dafür, dass kein DELETE & UPDATE ausgeführt wird.


----------



## VfL_Freak (11. Okt 2010)

Hallo Thomas,

ach so, Du willst sie nach dem Schreiben quasi dauerhaft sperren ...... 

Dazu fällt mir so spontan leider nichts ein, da ich nicht wüsste, wie man das DB-seitig einstellen sollte.

Da wirst Du das UPDATE (und auch das DELETE) wohl selbst unterbinden müssen ....

Gruß
Klaus

#####   zu spät ;(   #####


----------



## fastjack (11. Okt 2010)

Der Datensatz muß in Stein gemeißelt werden 

Ich würde einfach Datenbankbenutzer anlegen, die Modifizieren und Lesen dürfen und Benutzer, die nur Lesen dürfen, für den Rest der Welt sozusagen. Ändern wird man immer irgendwie können, Du mußt halt nur dafür Sorgen, daß Person X das nicht darf / oder kann.


----------



## t.stein (11. Okt 2010)

fastjack hat gesagt.:


> Der Datensatz muß in Stein gemeißelt werden
> 
> Ich würde einfach Datenbankbenutzer anlegen, die Modifizieren und Lesen dürfen und Benutzer, die nur Lesen dürfen, für den Rest der Welt sozusagen. Ändern wird man immer irgendwie können, Du mußt halt nur dafür Sorgen, daß Person X das nicht darf / oder kann.



Super Tipp! DANKE!


----------

