是否可以制作這樣一個觸發器,當您嘗試洗掉一行并列印如下內容時運行:“嘗試洗掉行 ROW_ID”,而不是實際洗掉該行?
UPD:謝謝。為我作業:
GO
CREATE OR ALTER TRIGGER Trigger_2 ON Authors
INSTEAD OF DELETE
AS BEGIN
DECLARE @deleted_id INT;
DECLARE cursor_deleted CURSOR
FOR SELECT au_id FROM deleted;
OPEN cursor_deleted;
FETCH NEXT FROM cursor_deleted INTO @deleted_id;
WHILE @@FETCH_STATUS = 0
BEGIN
PRINT('Attempting to delete author ' STR(@deleted_id));
FETCH NEXT FROM cursor_deleted INTO @deleted_id;
END;
CLOSE cursor_deleted;
DEALLOCATE cursor_deleted;
END;
GO
DELETE FROM Authors WHERE au_id BETWEEN 1 AND 10;
uj5u.com熱心網友回復:
是的,而且有很多方法。使用觸發器,您可以將觸發器設定為在洗掉后運行,并且您必須使用“ ROLLBACK ”來撤消洗掉操作。或者只是簡單地使用 INSTEAD OF,顧名思義,觸發器將替換 who 洗掉操作。希望這有任何幫助。ps:洗掉操作后,洗掉的資料存盤在名為“已洗掉”的全域表中,用于獲取您需要的任何資料或元資料。
CREATE TRIGGER schema_name.trigger_name
ON table_name
// this trigger is executed instead of any deletion
INSTEAD OF DELETE
AS
BEGIN
// return the one to be deleted's id.
return deleted.id
END
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/362297.html
標籤:sql-server 查询语句 触发器
下一篇:T-SQL查詢獲取子元素的最大值
