Announcement

Collapse
No announcement yet.

Insert Trigger und @@Identity

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

  • Insert Trigger und @@Identity

    Hallo zusammen.

    Darf man im Zusammenhang mit einem Insert Trigger @@Identity verwenden?
    Zum Beispiel so:
    Code:

    CREATE TRIGGER Redflagmail
    ON RPI_Redflag
    AFTER INSERT
    AS
    IF @@ROWCOUNT = 0 RETURN
    SET NOCOUNT ON
    --Alte REDFLAGS als nicht aktiv kennzeichnen
    UPDATE RPI_Redflag
    SET Aktiv = 0
    WHERE NOT (ID = @@IDENTITY)

    Bernhard

  • #2
    Hallo,
    beim Microsoft SQL Server sind im Trigger zwei virtuelle Hilfstabellen sichtbar. Die Tabelle <b>Inserted</b> enthält die neu hinzugekommenen bzw. geänderten Datensätze, während die Tabelle <b>Deleted</B> die gelöschten Datensätze enthält. Der Trigger wird unabhängig von der Anzahl der betroffenen Datensätze immer nur einmal am Ende gefeuert, damit muss man damit rechnen, dass zum Beispiel bei einem UPDATE in der Tabelle <i>Inserted</i> mehrere Datensätze vorgefunden werden.
    <br>
    Somit wird @@IDENTITY gar nicht benötigt, denn in der virtuellen Hilfstabelle <i>Inserted</i> hat die Primärschlüsselspalte bereits den "richtigen" ID-Wert:
    <code>
    ...
    UPDATE RPI_Redflag
    SET Aktiv = 0
    WHERE NOT (ID = (SELECT ID FROM Inserted))
    </code&gt

    Comment


    • #3
      Besten Dan

      Comment

      Working...
      X