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
是否可以创建这样的触发器,在您尝试删除行时运行并打印如下内容:“尝试删除行 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