trešdiena, 2011. gada 9. marts

Piemērs: Skats ar "With Check Option"

Ja maināmam skatam (updateable view) ir opcija "With Check Option", tad pirms datu mainīšanas tiek veikta pārbaude, vai izmaiņu gadījumā skats joprojām šo rindu atgriezīs. Ja tā nav, datu mainīšana tiek aizliegta.
Lielisks parametrs papildus datu drošībai datu bāzē.

Piemēra tabula un divi skati, no kuriem viens ar "With Check Option":
Create Table dbo.TestTable
(
   TestTableID int Identity primary key,
   Skaitlis int,
   Deleted bit Default 0
)
Go
Create View dbo.vw_TestTable
-- 2011-03-01 Komentārs par skatu
As
    Select TestTableID, Skaitlis, Deleted
    From dbo.TestTable
    Where Deleted = 0
    With Check Option
Go
Create View dbo.vw_TestTable_NoCheck
-- 2011-03-01 Komentārs par skatu
As
    Select TestTableID, Skaitlis, Deleted
    From dbo.TestTable
    Where Deleted = 0 
Skripts lai pārliecinātos par darbību (rinda, kas radīs kļūdu, sarkana):
-- Var ievietot rindu (updateable view).
Insert Into dbo.vw_TestTable (Skaitlis, Deleted) values (2, 0)
-- Kļūda- skatā 'Deleted' kolonnā nedrīkst ievietot 1, neatbilst where daļai! 
Insert Into dbo.vw_TestTable (Skaitlis, Deleted) values (2, 1)

-- vw_TestTable_NoCheck neveic pārbaudes (abi gadījumi OK)
Insert Into dbo.vw_TestTable_NoCheck (Skaitlis, Deleted) values (2, 0)
Insert Into dbo.vw_TestTable_NoCheck (Skaitlis, Deleted) values (2, 1)

-- Bāzes tabulā, protams, var darīt ko grib jebkurā gadījumā.
Insert Into dbo.TestTable (Skaitlis, Deleted) values (2, 1)
Pēc sevis satīram:
drop table dbo.TestTable
drop view dbo.vw_TestTable
drop view dbo.vw_TestTable_NoCheck

Nav komentāru:

Ierakstīt komentāru