确保不从数据库中删除表

时间:2011-10-15 14:04:36

标签: sql

我需要确保不会从数据库中删除表。我是不是该.. 创建包含COMMIT或创建包含ROLLBACK的DDL(或DML?)触发器的DDL(或DML?)触发器?

2 个答案:

答案 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,所以你可以回滚它。

更好的方法是删除权限,以便民众无法首先删除对象。拥有删除对象的权限也是放弃触发器的权利(通常)