MS-Office-Forum

Zurück   MS-Office-Forum > Microsoft Access & Datenbanken > SQL
Registrieren Forum Hilfe Alle Foren als gelesen markieren

Banner und Co.

Antworten
Ads
Themen-Optionen Ansicht
Alt 21.09.2018, 09:32   #1
mischma
MOF User
MOF User
Traurig T-SQL : MSSQL 2008 - Änderungstabelle füllen

Hallo zusammen,

die Prozedur spCheckNewTask fügt einen neuen Datensatz in die Tabelle tblBTportfolio ein.

Auf der Tabelle tblBTportfolio liegt ein UPDATE-Trigger der den geänderten Datensatz in die Tabelle tblLog schreiben soll.

Leider werden bei jedem Update nicht nur der aktualisierte Datensatz, sondern auch alle anderen Datensätze der Tabelle tblBTportfolio in die Tabelle tblLog geschrieben!

Woran kann das liegen?

Vielen Dank und Grüße, Mike

Code:

ALTER PROCEDURE [dbo].[spCheckNewTask] 
(
	@Program		 	NVARCHAR(50),
	@ProgramName			NVARCHAR(255),
	@ProgramDescription		NVARCHAR(MAX),
	@RequestedByID			INT,
	@ProgramLink_ID			INT,
	@RetVal 			int OUTPUT
)	
AS
BEGIN

	SET NOCOUNT ON;

	DECLARE @NeuerID INT

    -- Prüfe, ob der [ProgramName] bereits existiert
	IF NOT EXISTS(SELECT ProgramName FROM tblBTportfolio WHERE ProgramName = @ProgramName)
		BEGIN

			-- Neuen Datensatz einfügen (User+Zeitstempel erfolgt über Trigger!
			INSERT INTO tblBTportfolio
			(	
				CreatedOn, CreatedBy, Program, ProgramName, ProgramDescription, RequestedByID, ProgramLink_ID
			)
			VALUES
			(
				convert(smalldatetime, GETDATE()), dbo.fnBenutzer(SYSTEM_USER), @Program, @ProgramName, @ProgramDescription, @RequestedByID, @ProgramLink_ID
			)
	
			-- Neuen DS-ID in tblBTportfolio ermitteln und an Access zurückgeben
			SET @NeuerID = SCOPE_IDENTITY();
			
			-- Wenn kein verlinkter Task, dann neue ID updaten
			IF @ProgramLink_ID = 0 
				BEGIN
					
					UPDATE	tblBTportfolio
					SET		ProgramLink_ID = @NeuerID
					WHERE	ID = @NeuerID

				END

			SET @RetVal = @NeuerID;

		END
	
	-- Rückmeldung an Access
	RETURN;
	
END

ALTER TRIGGER [dbo].[triUpdate]
   ON [dbo].[tblBTportfolio]
   FOR UPDATE
AS 
BEGIN
	
	SET NOCOUNT ON;
	
    INSERT INTO	dbo.tblLog
	(
		ChangedOn,
		ChangedBy,
		ID,
		CreatedOn,
		CreatedBy,
		Program,
		ProgramName,
		ProgramDescription,
		ProgramLink_ID
	)
	SELECT	
		GETDATE(),
		dbo.fnBenutzer(SYSTEM_USER),
		ID,
		CreatedOn,
		CreatedBy,
		Program,
		ProgramName,
		ProgramDescription,
		ProgramLink_ID
	FROM
		inserted

END

__________________

c
mischma ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 21.09.2018, 10:04   #2
sonic8
MOF Koryphäe
MOF Koryphäe
Standard

Dein Problem wird ziemlich sicher nicht von dem hier gezeigten Code verursacht.
Gibt es evtl. weitere Trigger auf die beteiligten Tabellen?

__________________

Office / Access 2019: Rückkehr der Symbolleiste?
sonic8 ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 21.09.2018, 10:13   #3
fraeser
MOF Meister
MOF Meister
Standard

Hab schon ewig nichts mehr mit Triggern gemacht, aber müsste der Trigger nicht AFTER INSERT anstatt FOR UPDATE heißen?

__________________

Gruß, Jan

Zitat:

Programmieren und Microsoftail: "Gestern stand ich noch am Abgrund.....heute bin ich einen Schritt weiter....!"

fraeser ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 21.09.2018, 11:33   #4
mischma
Threadstarter Threadstarter
MOF User
MOF User
Standard

Hi sonic8,

Du lagst genau richtig. Problem damit behoben und funktioniert nun wie gewünscht.

Vielen Dank und Grüße, Mike

__________________

c
mischma ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 21.09.2018, 14:41   #5
hcscherzer
MOF Guru
MOF Guru
Standard

@Jan: https://docs.microsoft.com/de-de/sql/t-sql/statements/create-trigger-transact-sql?view=sql-server-2017

__________________

Freundlichen Gruß
Hans-Christian
-----------------------------------------
Oft erwünscht, selten beachtet: nach Erledigung des Problems den Thread als erledigt zu markieren
-----------------------------------------
Ich möchte nur Mitglied in einem Verein sein, der Leute wie mich nicht als Mitglied aufnimmt (Groucho Marx).
-----------------------------------------
Ab sofort regelmässig: MOF Stammtisch in Bremen. Näheres hier.
hcscherzer ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Ads
Antworten


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Besucher: 1)
 
Themen-Optionen
Ansicht

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge anzufügen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

vB Code ist An.
Smileys sind An.
[IMG] Code ist An.
HTML-Code ist An.
Gehe zu


Alle Zeitangaben in WEZ +1. Es ist jetzt 17:02 Uhr.


Partner und Co.
Access-Paradies -Alles rund um die Datenbank Microsoft Access -Code -Programme-Tools -Tipps   Kostenlose Tipps & Tricks, Downloads und Programme   www.kulpa-online.com - Tipps - Tricks - Tutorials - Meinungen - Downloads uvm...   vb@rchiv · Willkommen in der Welt der VB Programmierung   Access-Garhammer - Hier finden Sie jede Menge Beispiel-Datenbanken zu Access und mehr ...   mcseboard.de   Die Top Seite für Excel-VBA-Makros uvm.

Powered by: vBulletin Version 3.6.2 (Deutsch)
Copyright ©2000 - 2018, Jelsoft Enterprises Ltd.

Copyright ©2000-2018 MS-Office-Forum. Alle Rechte vorbehalten.
Copyright ©Design: Manuela Kulpa ©Rechte: Günter Kramer
Eine Verwendung der Inhalte in anderen Publikationen, auch auszugsweise,
ist ohne ausdrückliche Zustimmung der Autoren nicht gestattet.