SSMS表节点下Triggers文件夹为空但sys.triggers返回结果的原因是什么?
触发器存在但SSMS表节点Triggers文件夹不可见的原因及验证方法
- 触发器不属于表级DML触发器:SSMS单表下方的Triggers目录仅展示绑定到该表的DML触发器(即INSERT/UPDATE/DELETE事件触发的触发器),如果是数据库级/服务器级的DDL触发器,不会展示在单表目录下。你可以执行
SELECT name, parent_class_desc FROM SYS.TRIGGERS查看parent_class_desc字段,若值为DATABASE或SERVER,说明属于这类触发器,可在SSMS对应数据库的「可编程性」-「数据库触发器」路径下查看。 - 触发器被标记为系统对象:如果触发器的
is_ms_shipped属性被设为1,SSMS会将其识别为微软内置系统对象,默认隐藏不展示在用户对象目录下。你可以执行SELECT name, is_ms_shipped FROM SYS.TRIGGERS验证该属性值,若为1,可打开SSMS「工具」-「选项」-「SQL Server对象资源管理器」,勾选显示系统对象,刷新后即可查看。 - SSMS本地缓存未同步:如果触发器是刚部署完成,SSMS对象资源管理器的本地缓存没有更新最新对象状态,右键点击对应表的Triggers文件夹选择「刷新」,或直接刷新整个数据库节点即可解决。
- 触发器归属schema异常:极少数场景下会出现触发器绑定的表正确,但归属schema与表的schema不匹配,导致SSMS未将其关联到对应表目录下,可执行
SELECT t.name AS trigger_name, SCHEMA_NAME(t.schema_id) AS trigger_schema, SCHEMA_NAME(o.schema_id) AS table_schema FROM SYS.TRIGGERS t JOIN SYS.OBJECTS o ON t.parent_id = o.object_id核对两者schema是否一致。
内容的提问来源于stack exchange,提问作者LearneR
相关产品推荐
相关产品推荐

