Neuigkeiten:

Ist euer Problem gelöst, dann bitte den Knopf "Thema gelöst" drücken!

Mobiles Hauptmenü

Trigger-After Insert-Einschränkung

Begonnen von ellinho, April 10, 2012, 16:43:23

⏪ vorheriges - nächstes ⏩

ellinho

Hallo zusammen.
Ich habe einen Trigger an eine Tabelle1 "gehängt", der bei Insert eine andere Tabelle2 mit einigen dieser Werte "füttert", die in Tabelle2 benötigt werden. Dieser Trigger fügt jedoch auch den ersten Datensatz wieder an Tabelle2 an, wenn der zweite Datensatz an Tabelle1 hinzugefügt wird. Wie kann ich diese Aktivität so einschränken, dass immer nur der "frisch" angefügte Datensatz an die Tabelle2 angefügt wird?

Gruß
Karsten

UPDATE:
mit dem Befehl FROM INSERTED... habe ich das obige Trigger-Problem lösen können. Allerdings bezieht sich ein zweiter Trigger auf eine Sicht, d.h. nach Anfügen eines Datensatzes an die Tabelle1 läuft der Trigger ab und fügt an Tabelle3 Werte aus der Sicht hinzu. Kann ich den Trigger ebenfalls mit ....FROM INSERTED....aufbauen ? Wenn ja, wie ?

Gruß
Karsten


Momentan lautet der Trigger so :


USE [PersonalSQL]
GO
/****** Object:  Trigger [dbo].[ÜLAuszahlunganÜLJahresübersicht]    Script Date: 04/10/2012 17:24:08 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
-- =============================================
-- Author:      <Author,,Name>
-- Create date: <Create Date,,>
-- Description:   <Description,,>
-- =============================================
ALTER TRIGGER [dbo].[ÜLAuszahlunganÜLJahresübersicht]
  ON  [dbo].[ÜL_Dateneingabe]
  AFTER INSERT
AS
BEGIN
   -- SET NOCOUNT ON added to prevent extra result sets from
   -- interfering with SELECT statements.
   SET NOCOUNT ON;

   INSERT INTO dbo.[Uebungsleiter-Pauschale](Personalnummer,Nachname,Vorname,genommeneÜLeiterPauschale,Monat,Jahr)
   SELECT I.Personalnummer,Nachname,Vorname,genommeneÜLPauschale,I.Monat,I.Jahr
   FROM INSERTED I,dbo.ÜLSichtfürQuittierung

END

Allerdings fügt er den ersten Datensatz der Tabelle dbo.ÜL_Dateneingabe erneut an die Tabelle dbo.Uebungsleiter-Pauschale an, wenn bereits der zweite Datensatz eingegeben wird. Wie kann ich es einschränken, dass nur der aktuell angefügte Datensatz an die Tabelle dbo.Uebungsleiter-Pauschale angefügt wird ?

Gruß
Karsten

Ich hab's dann mal anders gelöst. Habe die Tabellen umstrukturiert und konnte so letztendlich die Sicht aus der Trigger-Anfügung herausnehmen und den Trigger so ändern, dass er er ebenfalls mit INSERTED I arbeitet.