Mam następujący wyzwalacz w tabela dla bazy danych SQL Server 2008. Powtarza się, więc muszę to zatrzymać.Jak zapobiec powtarzaniu wyzwalacza bazy danych?
Po wstawieniu lub aktualizacji rekordu próbuję po prostu zaktualizować pojedyncze pole w tej tabeli.
Oto spust:
ALTER TRIGGER [dbo].[tblMediaAfterInsertOrUpdate]
ON [dbo].[tblMedia]
BEFORE INSERT, UPDATE
AS
BEGIN
SET NOCOUNT ON
DECLARE @IdMedia INTEGER,
@NewSubject NVARCHAR(200)
SELECT @IdMedia = IdMedia, @NewSubject = Title
FROM INSERTED
-- Now update the unique subject field.
-- NOTE: dbo.CreateUniqueSubject is my own function.
-- It just does some string manipulation.
UPDATE tblMedia
SET UniqueTitle = dbo.CreateUniqueSubject(@NewSubject) +
CAST((IdMedia) AS VARCHAR(10))
WHERE tblMedia.IdMedia = @IdMedia
END
Czy ktoś może mi powiedzieć jak mogę zapobiec wkładkę spust jest od znowu rozpoczynamy kolejny spust?
Wiele ludzi mówi, aby wyłączyć rekursji wyzwalania. teraz, nie będę chciał dotknąć tego ustawienia. Wolę naprawić tsql. –
Następnie peryferyjne spust nie powinien być PRZED, ale wyzwalacz INSTEAD OF? http://msdn.microsoft.com/en-us/library/ms175089.aspx –