Delphi - Néhány hasznos lehetőség

SQL nézettáblák 4. rész

forráskód letöltése
Az előző részekben megismerkedhettünk a nézettáblák használatával és lehetőségeivel. Sorozatunk befejező részében megnézünk néhány további, hasznos lehetőséget. Megnézzük, hogy hogyan lehet átnevezni az adattáblák oszlopneveit, megjeleníteni adatforrásaikat, vagy a megjelenítés feltételeként megadott utasítást. Megismerkedünk a WITH ENCRYPTION és a WITH CHECK OPTION záradékok használatával.
A mellékelt példaprogram futtatása előtt a Unit1.pas forráskód 20. sorában lévő ConnectionString konstans értékét módosítsa úgy, hogy a Dolgozok példaadatbázis elérhetővé váljon.
A mellékelt Dolgozok.sql állomány tartalmazza a feltöltött példa adatbázis létrehozásához szükséges script-et. A script lefuttatásához használja az SQL szerver Manager programját. Amennyiben SQL szerverének elérési útja eltér a telepítési alapbeállítástól, úgy a script-ben írja át az elérési utakat a következőre: C:\Program Files\Microsoft SQL Server\MSSQL\data\
Induljunk ki az első részben létrehozott adatbázisból, amely még egyetlen nézettáblát sem tartalmaz.
Készítsük el ismét a Szemely_VIEW nézetet, de ez alkalommal úgy, hogy közben nevezzük át az eredeti oszlopneveket.
Az Enterprise Manager programban válasszuk a Tools – Wizards menüpontot. Nyissuk ki a Database ágat, majd válasszuk a Create View Wizard varázslót. Jelöljük ki a Dolgozok adatbázist, majd a Szemely adattáblát. A Szemely táblából válasszuk a Nev és a SzulIdo mezőket. A nézet neve ez alkalommal is Szemely_VIEW legyen.
Mielőtt a varázsló utolsó ablakában a Befejezés feliratú gombra kattintanánk, bővítsük a nézetet létrehozó parancsot a következőre:
USE [Dolgozok]
GO
CREATE VIEW [Szemely_VIEW] (Név,Születési_idő)
AS SELECT [dbo].[Szemely].[Nev], [dbo].[Szemely].[SzulIdo]
FROM [dbo].[Szemely]
WHERE (SzulIdo > '01.01.1972')
WITH CHECK OPTION
A CREATE VIEW sorban zárójelben, vesszővel elválasztva adhatjuk meg az oszlopok új neveit. A létrejövő nézettáblában a Nev és SzulIdo mezők az új nevükön keresztül válnak elérhetővé. Ez alkalommal is csak az olyan rekordokat jelenítsük meg, ahol a születési dátum nagyobb, mint 1972.01.01.
Az előző részben láthattuk, hogy a nézettáblán keresztül olyan rekordokat is felvihetünk, amelyek értékei nincsenek benne a nézet által megjeleníthető tartományban. Ha használjuk a WITH CHECK OPTION záradékot, akkor az SQL szerver ellenőrizni fogja a rekordok felvitelét, és csak olyan rekordok felvitelét engedélyezi, amelyek eleget tesznek azoknak.
A WITH CHECK OPTION záradékot használva, a mi esetünkben, az alábbi SQL parancs hibaüzenetet eredményez.
INSERT INTO [dbo].[Szemely_VIEW] VALUES (3,'Szilágyi Dezső','09.23.1958')
A fenti utasításra az SQL szerver a következő hibaüzenetet adja.
Insert Error: Column name or number of supplied values does not match table definition.
A WITH CHECK OPTION záradék hatását, Delphi programból nem tudjuk kihasználni. A példaprogramban látható, hogy továbbra is fel tudnunk vinni olyan rekordokat, ahol a születési dátum kisebb, mint 1972.01.01., annak ellenére, hogy a záradékot használjuk.
Az sp_depends tárolt eljárással lehetőségünk van arra, hogy megnézzük a nézettábla alapját képező adattáblákat és mezőket.
sp_depends Szemely_VIEW
Arra is lehetőségünk van, hogy a nézettáblában szereplő utasítást megnézhessük, ha az nincs letiltva a WITH ENCRYPTION záradékkal. Ezt a lehetőséget az sp_helptext tárolt eljáráson keresztül érhetjük el.
sp_helptext Szemely_VIEW
A SQL szerver tárolt eljárásait az ADOStoredProc komponens segítségével tudjuk elérni. Az eljárás nevét a ProcedureName tulajdonságban kell megadnunk. Mindkét tulajdonságnak szüksége van egy paraméterre, amely tartalmazza a nézettábla nevét. Ezt a paramétert a Parameters kollekcióban adhatjuk meg. Létre kell hoznunk egy új paramétert. A létrejövő paraméter Value tulajdonságában kell megadnunk a nézettábla nevét.
Ha a nézettábla létrehozásánál a CREATE VIEW utasításban használjuk a WITH ENCRYPTION záradékot, akkor a továbbiakban nem lesz lehetőségünk a lekérdezési parancs megtekintésére, így szerkesztésére sem.
Ha használni kívánjuk a WITH ENCRYPTION záradékot, akkor a Create View Wizard utolsó ablakában az utasítást a következőképpen adjuk meg.
USE [Dolgozok]
GO
CREATE VIEW [Szemely_VIEW] (Név,Születési_idő) WITH ENCRYPTION
AS SELECT [dbo].[Szemely].[Nev], [dbo].[Szemely].[SzulIdo]
FROM [dbo].[Szemely]
WHERE (SzulIdo > '01.01.1972')
WITH CHECK OPTION

SQL nézettáblák cikksorozat