summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBenjamin Franzke <benjaminfranzke@googlemail.com>2013-01-26 11:34:46 +0100
committerBenjamin Franzke <benjaminfranzke@googlemail.com>2013-01-26 11:35:11 +0100
commit4eba780ed25ea4fbae8e032dc3510e1c083d0310 (patch)
treeabb597133e0f84f5b25ae05039e5e577052cb491
parent62ada070e367e4b0d29f8c6f3a017b94510b1105 (diff)
downloadsqltutor-plugin-4eba780ed25ea4fbae8e032dc3510e1c083d0310.tar.gz
sqltutor-plugin-4eba780ed25ea4fbae8e032dc3510e1c083d0310.tar.bz2
sqltutor-plugin-4eba780ed25ea4fbae8e032dc3510e1c083d0310.zip
doc: Add a section about transactions as sandbox
-rw-r--r--doc/documentation.txt44
1 files changed, 44 insertions, 0 deletions
diff --git a/doc/documentation.txt b/doc/documentation.txt
index a7dba6d..eeff920 100644
--- a/doc/documentation.txt
+++ b/doc/documentation.txt
@@ -69,6 +69,50 @@ Für Moodle ist ein integriertes Video-Plugin verfügbar.
Im SQLBox
+=== Sandbox für User-Queries
+
+Der Nutzer der SQLBox muss bei jedem Aufruf einen konsistenen Datenbestand
+vorfinden. Dazu ist es notwendig, dass Anfrage in einer Sandbox ablaufen.
+Zu diesem Zweck sollen folgend verschiedene Möglichkeiten vorgestellt und
+evaluiert werden.
+
+===== Transactions
+
+Eine Idee ist es, die Eingabes des Nutzers durch Transactions zu schützen,
+indem vor dem Ausführen der Nutzeranfrage eine Transaction gestartet wird,
+und danach diese immer zurückgerollt (=ROLLBACK) wird:
+
+[source,sql]
+----
+# sqlbox instruction
+BEGIN TRANSACTION;
+
+# User Input:
+SELECT * FROM blub;
+
+# sqlbox instruction
+ROLLBACK TRANSACTION;
+----
+
+Ein Nutzer könnte aber aus dieser Sandbox ausbrechen, in dem er die gestartet
+Transaktion beendet, den Datensatz manipuliert und dann eine neue Transaction
+startet:
+
+[source,sql]
+----
+# sqlbox instruction
+BEGIN TRANSACTION;
+
+# User Input:
+INSET INTO blub VALUES (1,'foo')
+COMMIT TRANSACTION;
+BEGIN TRANSACTION;
+SELECT * FROM blub;
+
+# sqlbox instruction
+ROLLBACK TRANSACTION;
+----
+
== Literatur
* Niels Weber, Diplomarbeit