SQL-Daten über ein View ändern, löschen und hinzufügen

Aus maxTechCorner
Version vom 15. September 2026, 00:00 Uhr von imported>TechCorner-Redaktion (Softwareentwicklung: Überarbeitung)
(Unterschied) ← Nächstältere Version | Aktuelle Version (Unterschied) | Nächstjüngere Version → (Unterschied)

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 Software­entwicklung 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? Kontakt aufnehmen