collapse

* Benutzer Info

 
 
Willkommen Gast. Bitte einloggen oder registrieren. Haben Sie Ihre Aktivierungs E-Mail übersehen?

* Wer ist Online

  • Punkt Gäste: 69
  • Punkt Versteckte: 0
  • Punkt Mitglieder: 0

Es sind keine Mitglieder online.

* Forenstatistik

  • stats Mitglieder insgesamt: 14072
  • stats Beiträge insgesamt: 67582
  • stats Themen insgesamt: 9104
  • stats Kategorien insgesamt: 5
  • stats Boards insgesamt: 17
  • stats Am meisten online: 415

Autor Thema: Trigger-After Insert-Einschränkung  (Gelesen 4275 mal)

Offline ellinho

  • Access-Profi
  • **
  • Beiträge: 131
Trigger-After Insert-Einschränkung
« am: April 10, 2012, 16:43:23 »
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.

« Letzte Änderung: April 11, 2012, 00:04:24 von ellinho »