DML-Anweisung in einer SQL-Views
Ich versuche, erstellen Sie eine Ansicht in dieser Ansicht möchte ich einen Datensatz einfügen oder aktualisieren eines Datensatzes basierend auf besonders Zustand, so können wir insert oder update in die SQL-Ansicht. Können wir die insert-oder update-Anweisung in Sicht?
- Sie scheinen vergessen zu haben, eine Frage zu stellen...
- meine Frage ist nun, können wir die insert-oder update-Anweisung in Sicht
- Was RDMS verwenden Sie?
- SQL server 2005
- Ja dann: msdn.microsoft.com/en-us/library/ms180800(v=sql.90).aspx
- Ich verstehe nicht, warum würden Sie wollen, um eine
View
für diese. Es ist völlig falsch Mechanismus. Man braucht ein Verfahren.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Kurze Antwort: ja. Aber es gibt Einschränkungen.
ZB: (entnommen aus http://msdn.microsoft.com/en-us/library/ms180800(v=sql.90).aspx )
Alle änderungen, einschließlich UPDATE -, INSERT-und DELETE-Anweisungen, müssen auf Spalten verweisen, die nur aus einer Basistabelle.
Den geänderten Spalten in der Ansicht mit Bezug auf die zugrunde liegenden Daten in den Spalten der Tabelle direkt. Sie kann nicht abgeleitet werden, in anderer Weise, zum Beispiel durch:
Den geänderten Spalten nicht beeinflusst werden kann durch die GROUP BY -, HAVING-oder DISTINCT-Klauseln.
OBEN kann nicht verwendet werden, einer beliebigen Stelle in select_statement der Sicht, wenn die MIT with CHECK OPTION angegeben wurde.
Sooo..., wenn es ist ein relativ straight forward
insert
oderupdate
Sie zu erreichen versuchen, dann ist es sehr möglich, aber je komplexer die Abfrage (und die Ansicht), desto schwieriger wird es.Würd ich auch bieten einige Ratschläge gegen tun dies, wenn Sie können - meiner Meinung nach fügt es eine unnötige Ebene der Komplexität, und (als jemand hat wer hatte zu entwirren, andere Abfragen, die mit diesem Prozess) es ist eine echte Schmerzen zu pflegen.
Nein, Sie können Sie haben eine insert-oder update-Anweisung in einer Ansicht. Finden Sie in der Dokumentation für
CREATE VIEW
Erzwingt, dass die definition muss eine
SELECT
- Anweisung.