webForumDet fria alternativet
Logga in / Bli medlem

Vyer

Databaser & SQL

3 svar · 567 visningar · startad av erka

Medlem sedan dec. 19996 522 inlägg
Frågan#1

Kan någon förklara hur vyer fungerar i mssql2000 och vad man bäst använder dem till. Kan man tex göra ett antal vyer och spara dem, sen skickar man tex med extra parametrar till dem och ändrar om det man får som svar ifrån den ursprungliga vyen ?

Medlem sedan dec. 200012 464 inlägg
#2

En vy har två användningsområden, det ena är att förenkla frågor och det andra är att kunna styra vilket data olika personer får se.

T.ex. om du skapar en vy

create view v as 
  select * from t
   where c1 = 2

så kan du använda den som en vanlig tabell i olika frågor och ställa villkor på de kolumner som ingår i vyn.

select * from v join x on v.c2 = x.c2

vilket man också kan skriva som

select * from (select * from t
   where c1 = 2) as v join x on v.c2 = x.c2

så man uppnår inget funktionellt utan det är mest för att underlätta läsbarheten. Det är lite begränsningar hur man kan använda vyer, t.ex om du skapar en vy

create view v(c1) as select 17*c1 from t

så går det inte att uppdatera eller göra insert direkt via den vyn. (Det går med hjälp av instead of triggers.)

Det andra användningsområdet är alltså att begränsa acces för olika användare. Om man skapar en vy så kan man göra

grant select on v to erka

vilket innebär att erka enbart får se de poster som returneras av vyn.

Om du vill skicka parametrar så är det kanske en user-defined function du borde titta på
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/tsqlref/ts_create_7r1l.asp

Medlem sedan dec. 19996 522 inlägg
#3

LarsG, tack utömmande svar !

Medlem sedan maj 2004325 inlägg
#4

ökar det prestandan på frågor, om jag gör en färdig view på dom sqlfrågor som används ofta och är krävande?

260 ms totalt · 4 externa anrop · v20260731065814-full.14655e19
123 ms — deklarationer (db)
0 ms — hämta statistik (cache)
134 ms — hämta tråd, inlägg och bilagor (db)
123 ms — ändringar (db)