我在这里使用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'上创建触发器,因为目标不在当前数据库中。
提前感谢您的帮助。
答案 0 :(得分:1)
您必须 OldJunk
数据库(在SQL Server Management Studio中使用USE ....
命令),然后使用以下SQL语句创建触发器:< / p>
USE OldJunk;
GO
CREATE TRIGGER NotificationMail ON [dbo].[JunkTable]
.....
您不能在触发器定义中使用三部分(database).(schema).(object)
表示法。
如果这不起作用 - 那么你可能没有这样的表 - 是否有拼写错误?或者这不是一张桌子吗?