我的新模式遇到了一个奇怪的问题,无法找到解决方案。我使用以下语句成功创建了触发器:
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
模式相同的权限,但模式肯定有问题。我在这里缺少什么?
正如 @siggemannen 在评论中建议的那样,它通过在语句中指定模式来工作:
CREATE OR ALTER TRIGGER mySchema.myTrigger
ON mySchema.myTable
虽然即使没有指定,触发器 did 也会在
mySchema
模式中正确创建,但如果不明确指定它,就无法通过 ALTER
语句访问它。