SQL Datensatz in SELECT Anweisung manipullieren



  • Hi,
    ich möchte bei MSSQL über einen INSTEAD OF Trigger alle Datensätze, die in eine Tabelle geschrieben werden, verändern. Und zwar gibt es dort eine Spalte, die einen automatisch generierten Wert bekommen soll (in diesem Fall einen Link auf einen im Trigger angelegten Datensatz einer anderen Tabelle). Prinzipiell würde ich das so machen:

    CREATE TRIGGER [dbo].[TestTrigger]
       ON [dbo].[Test]
       INSTEAD OF INSERT
    AS 
    BEGIN
      INSERT INTO TblB ...;
    
      INSERT INTO Test
      SELECT * FROM inserted;
    END
    

    Um jetzt die entsprechende Spalte zu ändern, müsste ich ja entweder in dem SELECT alle Spalten aufzählen, was bei jeder Tabellenänderung auch eine Änderung des Triggers nach sich ziehen würde, oder aber ich bräuchte eine Möglichkeit, den Wert einer einzelnen Spalte in der SELECT-Anweisung zu überschreiben.
    Das hier funktioniert leider nicht, da nur eine zusätzliche Spalte angehängt wird:

    SELECT *, ColA=SCOPE_IDENTITY() FROM inserted
    

Anmelden zum Antworten