Welcome to Sign in | Help
in Search

view

Last post 12-15-2008, 10:20 AM by aflorin27. 6 replies.
Sort Posts: Previous Next
  •  11-10-2008, 12:00 PM 6108

    view

    Tabelul
    Albume ( idAlbum,NumeAlbum,Activ,idUtilizator,PozaAlbum(image),DescriereAlbum

    Sharing ( idSharing,idAlbum,idUtilizator,idTo,Activ)

     

    vreau ca un idUtilizator sa faca share cu un alt utilizator.Astfel, inregistrarile vor intra in
    tabelul Sharing

    am creat un view

    SELECT     TOP (100) PERCENT dbo.Albume.NumeAlbum, dbo.Albume.Activ AS Expr1, dbo.Albume.idUtilizator AS Expr2, dbo.Albume.PozaAlbum,
                          dbo.Albume.DescriereAlbum, dbo.Albume.idAlbum, dbo.Sharing.idTo, dbo.Sharing.Activ, dbo.Sharing.idUtilizator
    FROM         dbo.Albume RIGHT OUTER JOIN
                          dbo.Sharing ON dbo.Albume.idAlbum = dbo.Sharing.idAlbum

    afisez albumele utilzatorului 1 din tabelul Albume

    afisez albumele utilizatorului 2 din tabelul Albume

    afisez albumele pe care utilizatorul 1 le face share cu utilizatorul 2, din acel view,ShareView

    acum cand vreau sa sterg o inregistrare din acest view :
    Sa zicem ca utilizatorul 2 care are un album share de la utilizatorul 1 vrea sa il stearga.Dar sa il stearga doar din lista lui nu si din lista utilizatorului 1.ADica sa fie sters doar din view si nu din tabel.

    delete from sharedView where idalbum = 26

    View or function 'SharedView' is not updatable because the modification affects multiple base tables.

    Ce anume sa modific la View?Pot face ce vreau eu cu View sau sa folosesc altceva?

    Sper ca am explicat bine unde vreau sa ajung.
    Multumesc !

    Nu stiu cat conteaza :sqlServer2005 si lucru in asp simplu

  •  11-10-2008, 12:23 PM 6109 in reply to 6108

    Re: view

    Înţeleg că atunci când vrei să ştergi din view un rând, de fapt vrei să se şteargă din tabelul Sharing (nu din tabelul Albume). În acest caz, încearcă:

    DELETE dbo.Sharing FROM SharedView WHERE dbo.Sharing.idAlbum=26

    sau, mai simplu:

    DELETE FROM dbo.Sharing WHERE idAlbum=26

    Răzvan
  •  11-10-2008, 12:58 PM 6111 in reply to 6109

    Re: view

    Multumesc mult ! A mers ! Scuzati-mi lipsa de concentrare !
  •  11-10-2008, 1:53 PM 6113 in reply to 6108

    Re: view

    Razvan tzi-a raspuns deja cum se face, dar pentru 'record': ca sa faci updatabil un view care implicit nu se poate updata se poate folosi in trigger INSTEAD OF care sa transforme operatiunile pe view in operatiuni pe tabelele care-l compun. Desi eu nu as recomanda asa ceva.

    http://rusanu.com
  •  12-11-2008, 5:48 PM 6393 in reply to 6113

    Re: view

    Pentru curiozitatea mea:
    de ce nu ar fi recomandat un INSTEAD OF trigger?
  •  12-11-2008, 6:40 PM 6394 in reply to 6393

    Re: view

    În cazul de faţă, un trigger INSTEAD OF nu ar fi recomandat pentru că e mult mai simplu ca aplicaţia să şteargă din tabela corectă. În cazul în care aplicaţia nu se poate modifica, atunci se poate pune problema şi de un trigger INSTEAD OF.

    În general, sunt două probleme cu trigger-ele INSTEAD OF:
    - trebuie întreţinute (de fiecare dată când se adaugă o nouă coloană în tabelă, trebuie modificate trigger-ele de INSTEAD OF INSERT şi INSTEAD OF UPDATE);
    - pot afecta puţin performanţa, deoarece implică încă o operaţiune, de copiere a datelor din pseudo-tabelele inserted/deleted în tabelele reale.

    Răzvan
  •  12-15-2008, 10:20 AM 6446 in reply to 6394

    Re: view

    Are logica :) Multumesc.
View as RSS news feed in XML
Powered by Community Server (Commercial Edition), by Telligent Systems