简单的SQL Server触发器疑难解答

时间:2013-09-19 14:11:12

标签: sql sql-server-2008 triggers sqlmail

我在这里使用SQL Server 2008。我继承了一个正在濒临死亡的旧网络应用程序,并被一个全新的网络应用程序所取代。新项目已启动并正在运行,但旧项目将在过渡期间的下个月半存在。

问题在于:有人在使用此应用程序向SQL Server中的表添加新记录时需要采取措施。旧的源代码是相当模糊的(严重的是,在我到达之前没有版本控制),我不能花时间把一些东西放在一起,这样我就可以使用旧的应用程序收到电子邮件通知。

我的想法 - 使用SQL Server触发器在插入后发送电子邮件。真的,这就是我想要的:每当一个新记录(并且它总是一个,而不是几十个)被输入表格时,我想给自己和另一个幸运的人发送一封电子邮件。我在SQL Server中从未这样做过,但似乎可行。

这是我目前的SQL脚本:

CREATE TRIGGER NotificationMail 
ON OldJunk.[dbo].[JunkTable]
AFTER INSERT
AS
BEGIN
   EXEC msdb.dbo.sp_send_dbmail --QUESTION: I HAVE NO IDEA WHAT TO PUT HERE, WHAT FOLLOWS
                                -- IS JUST COPYPASTA FROM A FORUM
            @recipients = 'shubniggurath@email.com, someoneelse@email.com',
            @subject = 'Old Registration Request - New Record',
            @body = 'Somebody decided to register using the old system.'
END            
GO

当我尝试执行此create语句时,我收到此错误:

  

无法在'OldJunk.dbo.JunkTable'上创建触发器,因为目标不在当前数据库中。

提前感谢您的帮助。

1 个答案:

答案 0 :(得分:1)

您必须 OldJunk数据库(在SQL Server Management Studio中使用USE ....命令),然后使用以下SQL语句创建触发器:< / p>

USE OldJunk; 
GO 

CREATE TRIGGER NotificationMail ON [dbo].[JunkTable]
.....

您不能在触发器定义中使用三部分(database).(schema).(object)表示法。

如果这不起作用 - 那么你可能没有这样的表 - 是否有拼写错误?或者这不是一张桌子吗?