TSQL
Die SQL-Standard-Erweiterung von Microsoft.
Datentypen:
Bei Geldbeträgen entweder Money oder wenn nicht geht decimal weil die Nachkommastellen weil sie genau sind
Variablen:
DECLARE @var INT;
SET @VAR = 12;
Cursor: Nur nehmen wenn nicht anders möglich, weil sehr langsam
DECLARE cursor CURSOR FOR
SELECT ... FROM ...
OPEN cursor
Trigger:
Stored Procedure, die automatisch ausgeführt wird, wenn etwas passiert
Zeitpunkte:
- BEFORE: wird vor der Änderung durchgeführt
- AFTER: wird nach der Änderung durchgeführt, d.h. Zurücknehmen mit
ROLLBACK TRANSACTION, das funktioniert nur wenn eine Transaktion aufgemacht wurde - INSTEAD OF: wird statt der Änderung durchgeführt
Level:
- Row-Level-Trigger: Trigger wird für jede betroffene Zeile einzeln ausgeführt
- Statement-Level-Trigger: Trigger wird einmal mit allen Änderungen ausgeführt (bei MSSQL)
Datenzugriff:
Über zwei Spezialtabellen, INSERTED sind die neuen Daten und DELETED, die Daten die gelöscht werden. Bei Updates sind in INSERTED die neuen und in DELETED die alten Daten.
Rekursive: Ein Trigger ruft sich selbst wieder auf
Nested: Ein Trigger ruft einen anderen Trigger auf
Anwendungsfälle:
- Überwachung von Constraints, die sonst nicht möglich sind (z.B. max 36 Schüler in einer Klasse)
- Automatisierung von Aktionen, die sonst manuell durchgeführt werden müssten (z.B. Aktualisierung redundanter Daten)
Syntax:
CREATE OR ALTER TRIGGER name
ON table
[FOR/AFTER/INSTEAD OF] INSERT, UPDATE, DELETE
AS BEGIN
...
END
Am Anfang Immer:
SET NOCOUNT ON;
IF (ROWCOUNT_BIG() = 0) RETURN;