sql-server - SQL Server - 从触发器名称未知的表中删除所有触发器
问题描述
我正在使用 SignalR,它会在数据库表上自动创建具有随机名称的触发器。
有没有一种方法可以使用 T-SQL 脚本从特定表中删除所有触发器而不删除该表?
解决方案
您可以使用动态 SQL 和sys.triggers系统表:
DECLARE @sql NVARCHAR(MAX);
SELECT @sql = STRING_AGG(FORMATMESSAGE(N'DROP TRIGGER %s.%s;'
,QUOTENAME(OBJECT_SCHEMA_NAME(t.object_id))
,QUOTENAME(t.name))
,NCHAR(13))
FROM sys.triggers AS t
WHERE t.is_ms_shipped = 0
AND t.parent_id = OBJECT_ID('table_name');
PRINT @sql; -- debug
--EXEC(@sql);
编辑:
SQL Server 2012 版本:
DECLARE @sql NVARCHAR(MAX) = '';
SELECT @sql += FORMATMESSAGE(N'DROP TRIGGER %s.%s;'
,QUOTENAME(OBJECT_SCHEMA_NAME(t.object_id))
,QUOTENAME(t.name))
+ NCHAR(13)
FROM sys.triggers AS t
WHERE t.is_ms_shipped = 0
AND t.parent_id = OBJECT_ID('t');
PRINT @sql; -- debug
--EXEC(@sql);
推荐阅读
- java - 如何使用 Java 和 JNI 为 SAP-GUI 脚本的那部分创建方法?
- c# - 一对一关系字段在剃刀详细信息页面(实体框架)上导致 NullReferenceException
- java - 设计模式多功能对一功能对多功能实现
- python - Django 分页错误。使用哪个对象作为 page_obj?
- node.js - Nodejs 流 API 和 AWS S3
- c++ - 未初始化的成员变量和非标准语法使用 & 创建指向成员的指针
- python - 无法将吐出数组的索引插入变量
- java - 在 EMF 模型中添加自定义日期类型会产生错误:带有键“格式”的 DateConversionDelegate 注释包含错误值
- c - 使用函数处理链表的程序正在运行,但产生的结果为 1
- oracle - Oracle中的分页与动态查询