C# - Triggerek kezelése

Transact SQL 14. rész

forráskód letöltése
Ebben a részben a triggerek létrehozásával, módosításával és megszüntetésével foglalkozunk.
01.sql
Az első lépés most is egy adatbázis létrehozása.
02.sql
A triggerek táblákhoz kapcsolódnak, így létrehozunk egy táblát is az adatbázisban, melynek lesz egy kulcsmezője (KeyField), egy szöveges adatot tartalmazó mezője (TextValue) és egy dátumot és időt tartalmazó mezője (LastModified).
03.sql
A harmadik lépésben létrehozunk egy triggert a táblához, amely a LastModified mezőbe fogja beszúrni azt a dátumot és időpontot, amikor az adott rekord adatait módosították. Ez a következőképpen néz ki:
CREATE TRIGGER TestTrigger ON TestTable
FOR INSERT, UPDATE
AS
UPDATE TestTable
SET LastModified=GetDate()
FROM Inserted
WHERE TestTable.KeyField = Inserted.KeyField
A triggert létrehozó utasítása tehát CREATE TRIGGER. Ezután áll a trigger neve, majd az ON kulcsszó után annak a táblának a neve, amelyhez kapcsolódik. A FOR kulcsszó után megadhatjuk az INSERT, UPDATE vagy DELETE kulcsszókat. Ez fogja meghatározni, hogy a trigger milyen események hatására fut le. Egyszerre akár mind a hármat használhatjuk. Ezután következik az AS kulcsszó, és utána a végrehajtandó SQL parancsok. Az INSERT és UPDATE eseményeknél az Inserted tábla rekordszerkezete megegyezik a tábla szerkezetével, és azokat a rekordokat tartalmazza, amelyeket beszúrtak, illetve módosítottak. A KeyField mezőre azért van szükség, hogy az egyes rekordokat egyértelműen tudjuk azonosítani.
04.sql
Beszúrunk néhány rekordot, hogy lássuk, hogyan is működik a trigger.
INSERT INTO TestTable (TextValue) VALUES ('Alfa');
INSERT INTO TestTable (TextValue) VALUES ('Béta');
INSERT INTO TestTable (TextValue) VALUES ('Gamma');
Látható, hogy csak a TextValue mezőben adunk meg értéket, a rekordok lekérdezésénél mégis ki lesz töltve a LastModified mező, méghozzá a rekordok beszúrásának időpontjával.
05.sql
Módosítjuk a triggert úgy, hogy ne csak a dátumot írja be, hanem a szöveges mezőbe beírt adatot is módosítsa úgy, hogy a sztring elejéről törli a felesleges szóközöket. A módosítást az ALTER TRIGGER utasítással tudjuk elvégezni, ennek szintaktikája megegyezik a CREATE TRIGGER utasításéval.
ALTER TRIGGER TestTrigger ON TestTable
FOR INSERT, UPDATE
AS
  UPDATE TestTable
  SET TestTable.TextValue = LTrim(TestTable.TextValue)
  FROM Inserted
  WHERE TestTable.KeyField = Inserted.KeyField
  UPDATE TestTable
  SET LastModified = GetDate()
  FROM Inserted
  WHERE TestTable.KeyField = Inserted.KeyField
06.sql
Beszúrunk még néhány rekordot, hogy lássuk az új trigger jól működik-e. Szándékosan olyan adatokat szúrunk be, melyeket a triggernek módosítania kell.
07.sql
A DROP TRIGGER utasítással töröljük a triggert. Az utasítás után egyszerűen meg kell adni a törlendő trigger nevét.
DROP TRIGGER TestTrigger
08.sql
Újra beszúrunk néhány rekordot, és látni fogjuk, hogy a trigger tényleg megszűnt.
09.sql
Töröljük az adatbázist.

Transact SQL cikksorozat

Transact SQL Referencia - Transact SQL 1. rész
Transact SQL további belső változói - Transact SQL 2. rész
Dátumkezelés a Transact SQL-ben - Transact SQL 3. rész
Sztringkezelés a Transact SQL-ben - Transact SQL 4. rész
Folyamatvezérlés eszközei a Transact SQL-ben - Transact SQL 5. rész
Összesítő függvények - Transact SQL 6. rész
Adatbázisok létrehozása, törlése - Transact SQL 7. rész
Adatbázis módosítás lehetőségei - Transact SQL 8. rész
Táblák létrehozása - Transact SQL 9. rész
Táblák módosítása, törlése - Transact SQL 10. rész
Rendszer funkciók - Transact SQL 11. rész
Adatkonvertálási lehetőségek - Transact SQL 12. rész
Tárolt eljárás létrehozása - TransactSQL 13. rész

Triggerek kezelése - Transact SQL 14. rész

Indexek létrehozása - Transact SQL 15. rész
Függvények definiálása - Transact SQL 16. rész
Függvények felüldefiniálása és törlése - Transact SQL 17. rész
Szabályok létrehozása - Transact SQL 18. rész
Alapértelmezett értékek megadása - Transact SQL 19. rész
Nézet táblák létrehozása - Transact SQL 20. rész
Nézettáblák módosítása - Transact SQL 21. rész
Adatbázis és tranzakciós napló mentése - Transact SQL 22. rész
Elmentett adatbázis és tranzakciós napló visszaállítása - Transact SQL 23. rész
Full-Text Catalog létrehozása, használata - Transact SQL 24. rész
Full-Text Catalog további lehetőségei - Transact SQL 25. rész
Tranzakció-kezelés az MS SQL-ben - Transact SQL 26. rész
Tranzakció-kezelés az MS SQL-ben - Transact SQL 27. rész
SET parancsok - Transact SQL 28. rész