Announcement

Collapse
No announcement yet.

Trigger schreibt 2mal die gleichen Werte

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

  • Trigger schreibt 2mal die gleichen Werte

    Hi Leute, hab da ein Problem mit diesem Trigger.
    Er überwacht das Update einer bestimmten Tabelle. Falls diese Tabelle ein UPDATE Eregnis hat schreib er die das Produkt welches geändert wurde in die Triggertabelle. Nur schreib er 2mal die gleichen Werte in die Tabelle, habe also hinterher 2mal die gleichen Zeilen in der Tabelle. Könnt Ihr mir sagen warum.
    Es handelt sich um die AdventureWorks Datenbank vom MS SQL 2005 Server. Danke euch...

    ALTER TRIGGER [TriggerInventorychangesUpdate]
    ON [Production].[ProductInventory] FOR UPDATE
    AS
    BEGIN

    DECLARE @ProductID int;
    DECLARE @LocationID int;
    DECLARE @DatabaseUser sysname;
    DECLARE @ModifiedDate datetime;
    DECLARE @kindofchanges nvarchar(50);

    SET @ProductID = (SELECT ProductID FROM inserted);
    SET @LocationID = (SELECT LocationID FROM inserted);
    SET @DatabaseUser = (SELECT CURRENT_USER);
    SET @ModifiedDate = getdate();
    SET @kindofchanges = 'UPDATE';

    INSERT INTO dbo.ProductInventorychanges
    (ProductID,LocationID,DatabaseUser,ModifiedDate,ki ndofchanges)
    VALUES
    (@ProductID,@LocationID,@DatabaseUser,@ModifiedDat e,@kindofchanges);

    END;

  • #2
    Das liegt wohl daran, daß auf ein Update-Ereignis mit einem Insert-Befehl reagiert wird. Das Update-Ereignis korrigiert die Zeile und der Trigger fügt diese per Insert nochmal ein. Es müßte aber mit einem Update-Befehl abgeschlossen werden

    ALTER TRIGGER [TriggerInventorychangesUpdate]
    ON [Production].[ProductInventory] FOR UPDATE
    AS
    BEGIN
    DECLARE @DatabaseUser as sysname
    DECLARE @ModifiedDate as datetime
    DECLARE @kindofchanges as nvarchar(50)

    SET @DatabaseUser = (SELECT CURRENT_USER)
    SET @ModifiedDate = getdate()
    SET @kindofchanges = 'UPDATE'
    Update dbo.ProductInventorychanges
    set DatabaseUser=@DatabaseUser, ModifiedDate=@ModifiedDate, kindofchanges=@kindofchanges
    from inserted
    where ProductID=inserted.ProductID and LocationID=inserted.LocationID
    EN

    Comment

    Working...
    X