找不到触发器,尽管它存在?

18 浏览
0 Comments

找不到触发器,尽管它存在?

我得到了一个数据库,并试图解决一个触发器的错误(这是一个很小的改变),但是我已经查看了每个函数/触发器,所以我执行了以下操作:

select * from sys.triggers where name = 'NAME'

它返回了以下结果:

NAME 1181247263 1 OBJECT_OR_COLUMN 2053582354 TR SQL_TRIGGER 2012-11-13 09:41:13.707 2013-03-19 14:08:22.583 0 0 0 0

这到底是什么意思?是否确实存在一个名为OBJECT_OR_COLUMN的文件夹/函数,因为我看不到它?我是在SQL Server管理工具中进行这个操作的。

0
0 Comments

在某些情况下,即使触发器存在,也可能无法找到触发器。这种情况可能出现的原因包括:表名或触发器名拼写错误,触发器不属于所查询的模式,或者触发器在查询的数据库中不存在。

为了解决这个问题,可以采取以下方法:

1. 检查表名和触发器名的拼写是否正确。

2. 确保查询的模式正确。可以使用上面提供的SQL查询来获取关联表的信息,以确保所查询的模式和表名是正确的。

3. 确保触发器存在于查询的数据库中。可以使用上面提供的SQL查询来检查触发器是否存在。

通过采取上述措施,可以解决无法找到触发器的问题。

0
0 Comments

无法找到触发器,尽管它确实存在?

当出现这个问题时,可能是由于以下原因:

1. 触发器所依赖的父对象或列被删除或重命名,导致无法找到触发器的父对象。

2. 数据库中存在多个同名的触发器,但是查询时没有指定具体的触发器名称。

解决方法如下:

1. 使用以下代码查询sys.objects,查看触发器所依赖的父对象的信息:

   select * from sys.objects where object_id = '2053582354'
   

这将找到触发器的父对象。

2. 确保查询中指定了具体的触发器名称,避免出现同名触发器的冲突。

通过以上方法,您可以找到触发器的父对象,并解决无法找到触发器的问题。

0
0 Comments

问题出现的原因:

1. 可能是由于触发器的名称拼写错误或大小写不匹配导致无法找到触发器。

解决方法:

1. 使用给出的查询来查找触发器的位置,以确定触发器是否存在。

以下是这个问题的解决方法的整理:

问题:即使存在,也无法找到触发器(Can't find trigger even though it exists?)

问题出现的原因:

- 可能是由于触发器的名称拼写错误或大小写不匹配导致无法找到触发器。

解决方法:

- 使用以下查询来查找触发器的位置,以确定触发器是否存在:

SELECT 
    OBJECT_SCHEMA_NAME(parent_id) AS [Schema],
    OBJECT_NAME(parent_id) AS [Table],
    name AS [Trigger]
FROM 
    sys.triggers
WHERE 
    OBJECT_NAME(parent_id) = '表名'

请将上述代码中的'表名'替换为实际的表名。执行该查询后,将返回触发器所在的模式、表名和触发器名称。

希望以上解决方法能够帮助您找到触发器并解决问题。

0