SQL-Daten über ein View ändern, löschen und hinzufügen
SQL-View als Zwischenschicht
Manchmal soll nicht direkt auf eine Tabelle zugegriffen werden, sondern über eine View, die die Daten aufbereitet. Lassen sich Daten über eine View auch ändern, löschen und einfügen? Ja.
Einsatzszenarien
- Eine historisch gewachsene Datenbank umbauen (Spalten entfernen/ergänzen, Datentypen ändern), ohne alte Anwendungen anzupassen – die alten Apps greifen weiter auf eine View zu.
- Sicherstellen, dass eine Anwendung nur mit einer gefilterten Datenmenge arbeitet (View mit WHERE und WITH CHECK OPTION).
View erzeugen
CREATE VIEW Kunden
AS
SELECT bewegdaten.Id, bewegdaten.Name, bewegdaten.Vorname, stammdaten.OrtName AS Ort
FROM Kunden_Archiv bewegdaten
JOIN Orte stammdaten ON bewegdaten.OrtId = stammdaten.Id
WHERE Land = 'DE'
WITH CHECK OPTION;
SELECT
SELECT * FROM Kunden ORDER BY Id;
UPDATE
Betrifft das UPDATE nur die Basistabelle, ist es unproblematisch:
UPDATE Kunden SET Name = 'Müller' WHERE ID = 123;
Betrifft die Änderung mehrere Tabellen, ist ein INSTEAD-OF-Trigger nötig:
CREATE TRIGGER TRG_Update_Kunden
ON Kunden
INSTEAD OF UPDATE
AS
BEGIN
SET NOCOUNT ON;
UPDATE Kunden_Archiv
SET Name = inserted.Name, Vorname = inserted.Vorname, OrtId = stammdaten.Id
FROM inserted
LEFT OUTER JOIN Orte stammdaten ON inserted.Ort = stammdaten.OrtName
WHERE Kunden_Archiv.ID = inserted.ID;
END
DELETE
Bei mehreren verknüpften Tabellen (JOIN) ist Löschen nur per Trigger möglich (sonst Meldung 4405):
CREATE TRIGGER TRG_Delete_Kunden
ON Kunden
INSTEAD OF DELETE
AS
BEGIN
SET NOCOUNT ON;
DELETE Kunden_Archiv
FROM deleted
WHERE Kunden_Archiv.ID = deleted.ID;
END
INSERT
Analog: Bei mehreren verknüpften Tabellen einen INSTEAD-OF-INSERT-Trigger verwenden.
Unterstützung von m.a.x. it
Bei plattformübergreifender App- und Softwareentwicklung unterstützt Sie m.a.x. it mit individueller Softwareentwicklung.
Über m.a.x. it Die m.a.x. Informationstechnologie AG ist seit über 30 Jahren IT-Partner mittelständischer und großer Unternehmen in München und bietet maßgeschneiderte Lösungen und Services in den Bereichen Cloud, Cybersecurity, Netzwerk, Windows, Linux und Softwareentwicklung. Sie haben eine Frage zu diesem Artikel oder brauchen Unterstützung?
