MSSQL: Trigger funktioniert nicht wie er soll

Aurtex

Grünschnabel
Hallo zusammen,
ich sehe mich folgendem Problem gegenüber und bin mit meiner kreativität am Ende. Boardsuche und Google bringen mich auch nicht sonderlich weiter. Es geht um folgendes:

Ich habe eine (MSSQL)Datenbank in welcher mehrere tausend Datensätze gespeichert sind. Dieser Datenbank sollen mit einer LightSwitch-Anwendung weitere Datensätze hinzugefügt werden. Allerdings sollen (im Sinne der Übersichtlichkeit) keine doppelten Einträge erstellt werden dürfen.

Ich habe also 3 wichtige Tabellen: Projekte_Listen (Fremschlüssel zur Zuordnung der Aufgaben zu einem Projekt z.B. 18), Nummer (Laufnummer der Aufgabe z.B. 4.1) und Sortierung (Im Prinzip die Laufnummer nur mit vorangehenden Nullen bspw.: 004.001)

Wenn nun ein Anwender in der LightSwitch Anwendung einen neuen Eintrag (zum Projekt mit ID 18) mit der Nummer 4.1 (Sortierung wird automatisch aus der Laufnummer generiert) erstellt soll, bevor der Datensatz in die Datenbank übernommen wird durch einen Trigger überprüft werden, ob ein solcher Eintrag schon vorhanden ist.

Im Folgenden ist mein Versuch den Trigger zu realisieren. Aber nun bekomme ich jedes mal vom Trigger die Meldung, dass ein solcher Datensatz schon existiert, obwohl er das nicht tut. Neue datensätze in die Datenbank einzupflegen ist somit nicht möglich. Könnt Ihr mir helfen?

Grüße,
Aurtex

Code:
ALTER TRIGGER TRIG_DUPLICATE_NR
   ON  dbo.ListenSet
   AFTER INSERT, UPDATE
AS 
	IF EXISTS ( SELECT l.projekte_listen, l.sortierung, l.nummer
				FROM ListenSet AS l
				JOIN inserted AS i 
				ON l.projekte_listen = i.projekte_listen
				WHERE l.projekte_listen = i.projekte_listen AND l.nummer = i.nummer AND l.sortierung = i.sortierung 
			  )
	  
		BEGIN
			
			-- SET NOCOUNT ON added to prevent extra result sets from
			-- interfering with SELECT statements.
			SET NOCOUNT ON;

			-- Insert statements for trigger here
			RAISERROR ('Zu diesem Projekt existiert bereits ein Datensatz mit dieser Nummer.', 16, 1);	
			ROLLBACK TRANSACTION;
			RETURN 

END;

GO
 
Zuletzt bearbeitet:
Zurück