mssql sqlserver 编写触发器,禁止用户删除表-指定表


摘要:
在项目中,我们常常需要设置一个数据库触发器,来避免用户的误操作,导致表被删除掉,
下文将讲述,如何通过sqlserver数据库触发器来限制对表的删除操作


阻止用户删除表,我们可以建立数据库触发器,来截获用户的DDL操作语言,达到禁止用户删除指定表的操作
例:
——————————–

 

create table A(keyId int,info varchar(30))
go

CREATE TRIGGER tr_dataBase_dropTable  
ON DATABASE  
FOR DROP_TABLE, ALTER_TABLE
AS   

declare @tableName varchar(100)

DECLARE @dataInfo AS XML;
SELECT @dataInfo = EVENTDATA();
 
set @tableName=@dataInfo.value('(/EVENT_INSTANCE/ObjectName)[1]','varchar(100)') 
 
 if @tableName ='A'  ---指定如果表名为A,则禁止删除此表
 begin
 print '禁止删除表名为A的表'
 ROLLBACK
 end
 
 
go

ENABLE TRIGGER tr_dataBase_dropTable ON DATABASE
go

truncate table A
drop table A 
go

drop trigger tr_dataBase_dropTable on database 
go
mssql_sqlserver_数据库触发器_禁止删除指定表

mssql_sqlserver_数据库触发器_禁止删除指定表