sql - SQL Server 中丢失触发器

标签 sql sql-server triggers sql-server-2008-r2

丢失了一个触发器。我知道它是事件的,因为当我尝试更改字段时,它会恢复其值,并且从 SQL Server Management Studio 中我可以看到,当我执行查询时,正在执行一个额外的查询(触发器查询)。

我尝试了SELECT * FROM sys.triggers WHERE 1 = 1但它没有返回任何内容。另外,我知道触发器的名称,但是当我尝试ALTER时,它会返回一个错误,指出

the name of the object 'myTrigger' is not valid.

如果我尝试DROP TRIGGER myTrigger ON DATABASE

Trigger 'myTrigger' can not be removed because it does not exists, or the user has not enough priviledges.

最佳答案

好吧,正如 Lieven 所说,我没有查询正确的数据库...这很奇怪,因为查询定义了数据库

ALTER TRIGGER myTrigger
ON [DB].[dbo].[table]

但是SQL Server Management Studio的上层选择指向其他数据库...


编辑: 我进行了一些调查(尝试清理我的图像),并且在 SQL Server Management Studio 上发现了一个奇怪的行为。 如果您执行如下查询:

UPDATE [DB].[dbo].[table] SET column = 'value' WHERE column2 = 'foo'

它在正确的数据库中执行查询。无论上层select指向什么DB。

但是,如果您尝试使用触发器执行相同的操作,则必须让上方的选择指向正确的数据库,否则您将面临与我相同的问题。

关于sql - SQL Server 中丢失触发器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12089406/

相关文章:

mysql - 使用两个表进行数据操作

sql - 在 postgresql 函数中将变量放在查询上

mysql - 导出时触发意外错误

dynamic - Postgres : How to get the value of a dynamic column from triggers

java - hibernate/"absolutely necessary with bi-directional links"?

sql - 尽管使用了别名,但我从内部查询中找不到列

sql - 如何从 T-SQL 中的字符串中获取前 n 个句子?

sql-server - 在sql server中将列转换为行及其各自的数据

SQL查询在内部联接期间连接两列

triggers - 创建一个监听多个表的全局触发器