如果我使用一個INSTEAD OF DELETE
類似於我的示例中的觸發器,它是否適用於我刪除記錄的每一行,還是必須指定它?如果沒有,我該怎麼辦?使用選擇不同的?謝謝:)INSTEAD:對於SQL Server 2012中的每一行
ALTER TRIGGER "rdowner"."TriggerDelete" ON "rdowner"."V_MyTable"
INSTEAD OF DELETE
AS
BEGIN TRY
DECLARE @idActivity INT
SELECT @idActivity = rdowner.V_MyTable.Id,
FROM deleted
BEGIN
myDeleteRoutine
END
END TRY
BEGIN CATCH
SELECT
ERROR_NUMBER() AS ErrorNumber,
ERROR_SEVERITY() AS ErrorSeverity,
ERROR_STATE() as ErrorState,
ERROR_PROCEDURE() as ErrorProcedure,
ERROR_LINE() as ErrorLine,
ERROR_MESSAGE() as ErrorMessage
END CATCH
我的觸發需要的@idActivity,時間戳和每個刪除的行的一個varchar變量登錄到另一個表
SQL服務器將觸發** **從來沒有在每個工作」行「 - 它們在每個語句中被稱爲** ONCE **,所以如果你的DELETE語句刪除了50行,你的觸發器被稱爲** ONCE **,並且'Deleted'僞表包含了你需要處理的50行以**基於**的方式 –
是的。寫一個觸發器,不知道絕對的根本。請,你可以做得更好。 – TomTom
@marc_s非常感謝marc,這對我有幫助! – STDLN