我需要确保不会从数据库中删除表。我是不是该.. 创建包含COMMIT或创建包含ROLLBACK的DDL(或DML?)触发器的DDL(或DML?)触发器?
答案 0 :(得分:2)
假设SQL Server有an example of doing this in BOL
CREATE TRIGGER safety
ON DATABASE
FOR DROP_TABLE, ALTER_TABLE
AS
PRINT 'You must disable Trigger "safety" to drop or alter tables!'
ROLLBACK
;
最好不要删除任何可能DROP
表格不当的人的权限。 DDL触发器是在触发器之后,而不是触发器,因此即使最终回滚,drop table语句仍可能导致问题。
答案 1 :(得分:2)
您可以使用DDL trigger to ROLLBACK。 DDL本身就是一个事务,触发器是事务的pasrt,所以你可以回滚它。
更好的方法是删除权限,以便民众无法首先删除对象。拥有删除对象的权限也是放弃触发器的权利(通常)