t-sql INSTEAD OF deleting a row 打印它的id

t-sql INSTEAD OF deleting a row PRINT its id

是否可以创建这样的触发器,在您尝试删除行时运行并打印如下内容:“尝试删除行 ROW_ID”,而不是实际删除行?

更新: 谢谢。为我工作:

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;

是的,而且有很多方法。 使用触发器,您可以在删除后将触发器设置为 运行,然后您将不得不使用“ROLLBACK”来撤消删除操作。 或者只是简单地使用 INSTEAD OF where 顾名思义,触发器将替换 who 删除操作。 希望这个 helps 以任何方式。 ps:删除操作后,删除的数据存储在名为“deleted”的全局 table 中,用于获取您需要的任何数据或元数据。

 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