C# - Szabályok létrehozása

Transact SQL 18. rész

forráskód letöltése
Amikor egy táblát létrehozunk, akkor annak mezőinél meg kell adni az adattípust. Az adattípus meghatározza, hogy az adott mezőbe milyen értékek kerülhetnek. Nagyon sokszor előfordul azonban az, hogy az adattípus jóval több érték megadását teszi lehetővé, mint ami az adott mezőbe kerülhet. Például egy százalék értéket tartalmazó mező típusa lehet int (egész), ami 100-nál nagyobb, vagy akár negatív érték megadását is lehetővé teszi. Egy szabály megadásával azonban korlátozhatjuk ezt, vagyis meghatározhatjuk, hogy a mezőbe csak 0 és 100 közötti értéket adhassunk meg.
01.sql
Most is szükségük lesz egy teszt adatbázisra, tehát első lépésben ezt hozzuk létre.
02.sql
Létrehozunk egy táblát az adatbázisban két mezővel. Az egyik egy szöveges típusú mező (Txt), a másik pedig egy int típusú (Perc). Ez utóbbira hozunk létre egy olyan szabályt, amely nem engedi meg a 0-nál kisebb, és a 100-nál nagyobb értékek tárolását.
03.sql
A CREATE RULE utasítással létrehozzuk az új szabályt:
CREATE RULE RuleTest AS @Range>=0 AND @Range<=100
A RuleTest a szabály neve, amivel később hivatkozhatunk rá. Az AS kulcsszó után adhatjuk meg a feltételt, aminek a mezőbe írandó adatnak meg kell felelnie. Bármilyen feltételt megadhatunk, ami például a SELECT utasítás WHERE záradékában is érvényes. Az SQL Server nem ellenőrzi, hogy a feltételben szereplő kifejezések adattípusai egyformák-e, ezért erre oda kell figyelni, nehogy hibaüzenetet kapjunk az első ellenőrzés során. A feltételnek a @ karakterrel kell kezdődnie, ami egyben egy paramétert is jelöl. A paraméter neve tetszőleges lehet.
04.sql
Mivel a szabályok önálló objektumok, az elkészítésük után hozzá kell kapcsolni őket a táblák megfelelő oszlopaihoz, vagy egy általunk definiált adattípushoz. A hozzárendelést az sp_bindrule eljárással tudjuk megtenni:
EXEC sp_bindrule 'RuleTest', 'Table1.Perc'
Az eljárás első paramétere a szabály neve, a második pedig annak az objektumnak a neve, amihez rendeljük, jelen esetben a Table1 tábla Perc mezője. Harmadik paraméterként megadható a „FutureOnly” kapcsoló, amely csak a felhasználói adattípusoknál használható, és azt mondja meg, hogy a szabályt csak az ezután létrehozott adatokra fogja alkalmazni.
05.sql
Megpróbálunk felvenni 5 rekordot a Table1 táblába. Ezek közül kettő nem felel meg a megadott szabálynak, ezért hibaüzenetet kapunk.
06.sql
Megszüntetjük a szabály hozzárendelést a Table1 Perc mezőjéhez, majd a DROP RULE utasítással töröljük is a szabályt. A hozzárendelést az sp_unbindrule eljárással tudjuk megszüntetni:
EXEC sp_unbindrule 'Table1.Perc'
DROP RULE RuleTest;
Az sp_unbindrule eljárásnak csupán egy paramétert kell megadnunk, annak az objektumnak a nevét, amelyhez a továbbiakban nem szeretnénk alkalmazni a szabályt. A SROP RULE utasítás után meg kell adni a szabály nevét. Egy szabályt csak akkor lehet törölni, ha már egyetlen oszloppal vagy adattípussal sincs kapcsolatban.
Felveszünk újabb rekordokat, amelyek nem felelnek meg a szabálynak, de mivel már töröltük a szabályt, így nem kapunk hibaüzenetet, és a rekordok bekerülnek a táblába.
07.sql
Töröljük a teszt 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