在其他模式中创建或更改触发器:数据库中已有一个名为“myTrigger”的对象

问题描述 投票:0回答:1

我的新模式遇到了一个奇怪的问题,无法找到解决方案。我使用以下语句成功创建了触发器:

CREATE OR ALTER TRIGGER myTrigger
ON [mySchema].[myTable]
AFTER INSERT
AS
BEGIN
    -- do something
END

但是现在,每次我重复使用上面的语句时,都会收到错误:

数据库中已有一个名为“myTrigger”的对象。

当我删除

CREATE OR
并仅使用
ALTER TRIGGER myTrigger
时,我收到错误:

对象名称“myTrigger”无效。

我尝试使用不同的名称,相同的行为。我在

dbo
模式中有另一个触发器,它工作得很好。我什至尝试使用与
dbo
触发器中相同的代码并收到相同的错误消息。因此,虽然我给了它与
dbo
模式相同的权限,但模式肯定有问题。我在这里缺少什么?

sql-server t-sql triggers
1个回答
0
投票

正如 @siggemannen 在评论中建议的那样,它通过在语句中指定模式来工作:

CREATE OR ALTER TRIGGER mySchema.myTrigger
ON mySchema.myTable

虽然即使没有指定,触发器 did 也会在

mySchema
模式中正确创建,但如果不明确指定它,就无法通过
ALTER
语句访问它。

© www.soinside.com 2019 - 2024. All rights reserved.