我有一个数据库,里面有几个表:tab1、tab2、tab3。如何为仅tab2
创建一个DDL触发器(而不是为tab1和tab3创建)。当调用drop tab2
时,我需要更新此表中的值,但不要删除tab2。我找到了以下内容,但不理解它是如何工作的:
create trigger trDatabse_OnDropTable
on database
for drop_table
as
begin
set nocount on;
select
'Table dropped: ' +
quotename(eventdata().value('(/EVENT_INSTANCE/SchemaName)[1]', 'sysname')) + N'.' +
quotename(eventdata().value('(/EVENT_INSTANCE/ObjectName)[1]', 'sysname'));
end;
谢谢!
DROP
,只能在其发生后做出反应(即仅限于AFTER
触发器)。 - Joachim IsakssonDENY
来阻止删除权限,以防这种情况发生... - marc_sDROP TABLE
语句。正如@Sven的答案中所指出的那样,DDL触发器事件可以回滚。不需要使用DENY
权限。 - Dave Mason