Matthias Petermann wrote:
Guten Morgen Linux-Freunde
Guten Morgen,
Anderes Thema; ich bin gerade dabei ein wenig mit SQL herumzuspielen.
Brrr. Ich bin immer froh, wenn ich mit Datenbanken so wenig wie moeglich zu tun bekomme ... (sind doch nur Zahlen und Buchstaben auf 'ner Platte ;) ...)
Dabei bin ich auf die Frage gestoßen, ob SQL denn Sprachmittel zur Ver- fügung stellt, mit denen sich einzelne Tabellen für bestimmte User vorrübergehend sperren lassen, etwa um derweilen Änderungen daran vor- zunehmen. Soweit ich bisher mitbekommen habe, ist nach dem Erstellen
Wenn es dir hier um Synchronisationsprobleme geht, so kann ich nur betonen, dass sich darum eigentlich der SQL-Datenbank-Server zu kuemmern hat ...
Grundsaetzlich regelt der alle Anfragen so, dass zwar mehrere User (quasi) gleichzeitig lesen koennen, aber immer nur einer in einer Tabelle schreibt.
Wenn du Aenderungen an Tabellen nicht mit einer SQL-Anweisung hinbekommst, so kannst du mittels Transaktionen aus mehreren Statements ein atomare Aktion machen ... (dann kann sich der Server auch wieder um die Synchronisation kuemmern)
Die Transaction-Befehle sind AFAIK nicht im SQL-Standard festgelegt, aber BEGIN TRANSACTION <name>, ROLLBACK TRANSACTION <name> und COMMIT TRANSACTION <name> sind einen Versuch wert ... (so heissen die bei Sybase)
Ganz wichtig: Transaktionen immer so kurz wie moeglich und so lang wie noetig gestalten ...
einer Tabelle nur dem User der Zugriff (sowohl lesend als auch schreibend) erlaubt, der sie erstellt hat. In der Doku zu meinem SQL-System (miniSQL) werden solche Operationen nicht erwähnt, rein logisch betrachtet müsste es aber doch welche geben - oder?
Wenn es dir darum geht nur bestimmte Nutzer zu sperren (auch wenn mir der Sinn einer nur zeitweisen Sperrung nicht einleuchten will), so musst du zuerst weitere Nutzer anlegen ... Diese Befehle sind allerdings auch nicht standardisiert (da sie sich bei Kenntnis der Master-DB auch mit einfachen SQL-Statements realisieren lassen) ... Bei Sybase ist das sp_adduser oder sp_addlogin (wenn ich mich richtig erinnere) ...
Die Rechte-Vergabe erfolgt dann mit den SQL-Statements GRANT und REVOKE (zuruecknehmen von Rechten) ...
Hoffe, das hat geholfen ...
Bye.
Jens