【发布时间】:2010-07-05 06:47:07
【问题描述】:
我想删除和修改以前创建的触发器,但我无法在数据库中的任何位置找到它们。它们存在的位置以及如何编辑或删除它们
【问题讨论】:
-
你也可以使用这个链接:[sql server 中服务器触发器保存在哪里][1] [1]:stackoverflow.com/questions/3843256/…
标签: sql-server triggers
我想删除和修改以前创建的触发器,但我无法在数据库中的任何位置找到它们。它们存在的位置以及如何编辑或删除它们
【问题讨论】:
标签: sql-server triggers
您可以在 Table 节点下找到 Triggers:
【讨论】:
在SSMS(SQL Server Management Studio)的Tables节点下,每个表都有一个Triggers节点。
您可以从那里管理您的触发器。
【讨论】:
这里有一个更好的方法:
select a.[name] as trgname, b.[name] as [tbname]
from sys.triggers a join sys.tables b on a.parent_id = b.object_id
请务必针对您认为触发器所在的数据库运行它。
【讨论】:
您还可以通过查询 SQL Server Management Studio 中的管理视图来找到触发器:
SELECT
OBJECT_NAME(object_id) 'Table name', *
FROM
sys.triggers
这将为您提供所有触发器的列表以及它们为当前数据库定义的表。然后,您可以继续禁用或删除它们。
【讨论】:
为了扩展之前的答案,在所有最新版本的 SQL Server 中,您可以右键单击触发器并选择:Script Trigger as… ALTER To… "New Query Editor Window"
这将打开一个包含触发器详细信息的 SQL 脚本,如果您阅读代码,您会注意到它包含 ALTER 语法:ALTER TRIGGER [dbo].triggername ...
这意味着您可以编辑 SQL 并按执行来更改触发器 - 这将覆盖之前的定义。
如果触发器是使用自动化工具构建的,您可能会在触发器定义中发现要删除的重复代码。
在尝试编辑任何内容之前先尝试执行脚本是值得的,这将告诉您触发器定义是否有效。如果表或列被重命名,事情可能会不同步。
类似于删除/删除触发器完全选择:Script Trigger as… DROP To… "New Query Editor Window" 然后执行它。
【讨论】: