1

我在这里使用 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

当我尝试执行此创建语句时出现此错误:

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

在此先感谢您的帮助。

4

1 回答 1

1

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

USE OldJunk; 
GO 

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

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

如果这不起作用——那么你可能没有这样的表——有错字吗?或者这不是一张真正的桌子?

于 2013-09-19T20:29:46.800 回答