Announcement

Collapse
No announcement yet.

Neue Werte in einem INSTEAD OF INSERT/UPDATE Trigger ermitteln

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Neue Werte in einem INSTEAD OF INSERT/UPDATE Trigger ermitteln

    Hallo,

    wie kann ich in einem INSTEAD OF Trigger die neuen Eingabe-Werte ermitteln? In einem AFTER INSERT/UPDATE Trigger funktioniert dies ja über die Tabelle inserted und einen JOIN mit der dem Trigger zugrunde liegenden Tabelle. Das klappt bei einem INSTEAD OF Trigger aber nicht, da die Werte ja nicht in die Tabelle geschrieben wurden. Wie komme ich denn trotzdem an die richtigen Werte aus der Tabelle Inserted heran ohne den JOIN zu benutzen???

    mfg

    Jörg Seither

  • #2
    Hallo,

    das folgende Beispiel für einen INSTEAD OF-Trigger demonstriert, wie vor dem UPDATE die Werte von Spalten geändert werden können:
    <pre>
    USE tempdb
    GO

    CREATE TABLE TriggerTestTbl (
    TblID INTEGER NOT NULL IDENTITY PRIMARY KEY CLUSTERED,
    Wert VARCHAR(10),
    Zeitpunkt DATETIME)
    GO

    INSERT INTO TriggerTestTbl (Wert, Zeitpunkt)
    VALUES ('Test', CURRENT_TIMESTAMP)
    GO

    SELECT * FROM TriggerTestTbl
    GO

    CREATE TRIGGER trTriggerTestTblUpd ON
    TriggerTestTbl INSTEAD OF UPDATE
    AS
    BEGIN
    -- Fall 1
    IF (SELECT COUNT(*) FROM Inserted
    WHERE Wert = '') > 0
    BEGIN
    UPDATE TriggerTestTbl
    SET Wert = NULL,
    Zeitpunkt = CURRENT_TIMESTAMP
    FROM TriggerTestTbl AS t
    JOIN Inserted AS i ON i.TblID = t.TblID
    END
    -- Fall 2
    IF (SELECT COUNT(*) FROM Inserted
    WHERE Wert <> '') > 0
    BEGIN
    UPDATE TriggerTestTbl
    SET Wert = i.Wert,
    Zeitpunkt = CURRENT_TIMESTAMP
    FROM TriggerTestTbl AS t
    JOIN Inserted AS i ON i.TblID = t.TblID
    END
    END
    GO

    UPDATE TriggerTestTbl SET Wert = ''
    GO

    SELECT * FROM TriggerTestTbl
    WHERE Wert IS NULL
    GO
    </pre&gt

    Comment


    • #3
      Vielen Dank für die Antwort,

      jetzt habe ich das mit der inserted Tabelle endlich geschnallt :-)

      mfg

      Jörg Seithe

      Comment

      Working...
      X