无法找到sql server 2008中存储触发器的位置

时间:2010-07-05 06:47:07

标签: sql-server triggers

我想删除并修改以前创建的触发器,但我无法在数据库中的任何位置找到它们。它们存在的地方以及如何编辑或删除它们

5 个答案:

答案 0 :(得分:88)

您可以在表节点下找到触发器:

enter image description here

答案 1 :(得分:12)

在SSMS(SQL Server Management Studio)中的Tables节点下,每个表都有一个Triggers节点。

您可以从那里管理您的触发器。

答案 2 :(得分:8)

这是一个更好的方法:

select a.[name] as trgname, b.[name] as [tbname] 
from sys.triggers a join sys.tables b on a.parent_id = b.object_id

请确保针对您认为触发器所在的数据库运行它。

答案 3 :(得分:5)

您还可以通过在SQL Server Management Studio中查询管理视图来查找触发器:

SELECT
    OBJECT_NAME(object_id) 'Table name', *
FROM 
    sys.triggers

它为您提供了所有触发器的列表以及它们为您当前数据库定义的表。然后,您可以继续禁用或删除它们。

答案 4 :(得分:2)

要扩展以前的答案,在所有最新版本的SQL Server中,您可以右键单击触发器并选择:Script Trigger as… ALTER To… "New Query Editor Window"

这将打开一个带有触发器详细信息的SQL脚本,如果您阅读了代码,您会注意到它包含ALTER语法:ALTER TRIGGER [dbo].triggername ...

这意味着你可以编辑SQL并按下Execute来改变触发器 - 这将覆盖之前的定义。

如果使用自动化工具构建了触发器,您可能会在触发器定义中找到要删除的重复代码。

在尝试编辑任何内容之前,首先执行脚本是值得尝试的,这将告诉您触发器定义是否有效。如果已重命名表或列,则事情可能会不同步。

与删除/删除触发器类似,完全选择:Script Trigger as… DROP To… "New Query Editor Window"然后执行它。