Slette fra database View

Tags:    sql view c#

Lige for at ridse op, så har jeg et database-lag med hhv. en Oracle og en ms-sql klasse.

I både Oracle og ms-sql udføres denne meget simple sql-sætning:

Fold kodeboks ind/udSQL kode 


Det fungerer fint i Oracle, men i ms-sql slettes den ikke, selvom den faktisk returnerer at 1 række er slettet (jeg bruger system.data.sqlclient.sqlcommand til det). Så ingen fejl, men det slettes bare ikke fra tabellen.

Det skal siges at jeg har andre steder hvor den fint sletter gennem et view i ms-sql versionen.

Mit spørgsmål er nu, hvad i opbygningen af et view afgør om den kan slette eller ej i den tilhørende tabel? For Oracle formår at gøre det uden problemer :-(

*edit* Den sletter fint hvis jeg udfører kaldet på tabellen i stedet for viewet, men af hensyn til en mapping jeg laver mellem objekter og databasen, er det altid viewet jeg kører på *edit*



Indlæg senest redigeret d. 17.02.2014 11:50 af Bruger #9814
9 svar postet i denne tråd vises herunder
0 indlæg har modtaget i alt 0 karma
Sorter efter stemmer Sorter efter dato
Microsoft skriver selv dette:

"The view referenced by table_or_view_name must be updatable and reference exactly one base table in the FROM clause of the view.". Så ingen tvivl om at det er her det går galt hos mig.

Jeg forstår dog stadig ikke, at den ikke melder fejl. Selv i sql-management-studio skriver den at den er slettet, selv om den ikke gør det.



Hej Brian

Jeg mener ikke at man kan slette data fra et View, View er readonly.
Du kan ændre din sql kode, så den sletter data i tabellen i stedet for.




Hej Claus. Det kan man godt - som jeg skrev gør jeg det andre steder i koden.

Mvh. Brian



Hvis dit View er en join af flere table, kan man ikke slette data fra View'et.



Hej Brian,

Det skulle meget gerne kunne lade sig gøre.

http://stackoverflow.com/questions/1970083/sql-server-doing-a-delete-with-a-complex-view

Jeg har ikke selv gjort dette i længe, men alt efter hvordan dit view er lavet, og hvordan du laver din query, så skulle det godt kunne lade sig gøre.



Vi er enige om at det kan lade sig gøre hvis det er et simpelt view. Min forundring går på at den ikke kommer med fejl og skriver at den faktisk sletter - uden at posten forsvinder.



Hej..

Jeg har prøvet at oprette et View med flere Table og nogle data kan jeg godt ændre fra View'et og andre kan jeg ikke, men hvis jeg ikke kan ændre data kommer der en fejl.
Er det fra SQL Server Management Studio du laver ændringen?



Hej..

Jeg har prøvet at oprette et View med flere Table og nogle data kan jeg godt ændre fra View'et og andre kan jeg ikke, men hvis jeg ikke kan ændre data kommer der en fejl.
Er det fra SQL Server Management Studio du laver ændringen?




Den kommer hverken med en fejl fra management studio eller i min c# kode.



Hej..

Jeg mener at man kan disable alarmer i ms sql.




t