我需要通过sql server 2005设置一些内容,它会自动向新客户发送欢迎消息。通过先知21,每当新客户进入系统时,系统就会给他们一个唯一的9位数字。这些存储在名为“customer”的表中。我的数据库电子邮件已经设置完毕,我有个人资料。
我认为这样的事情应该有用吗?
IF EXISTS (SELECT 1 FROM inserted WHERE (customer id is not already present in table))
BEGIN
EXEC msdb.dbo.sp_send_dbmail
@recipients = 'whoever@customeremail.com',
@profile_name = 'P21 Alert',
@subject = 'Welcome!',
@body_format = 'HTML'
@body = 'Thank you for ordering product <product ID>, welcome to our company';
END
END
GO`
请帮助或指出我正确的方向!
答案 0 :(得分:0)
您的触发器需要考虑到一次可以插入多于一行的事实(想想INSERT INTO... SELECT .. FROM
)。
由于你想要单独向每个客户发送一封电子邮件,你几乎都在看光标一次循环一行,并且你绝对,你肯定不希望光标在你的触发器主体,因为它很可能会导致性能问题。
因此,您希望触发器将行插入保留/队列表,然后编写SQL作业以从游标循环中的该表中读取行并发送电子邮件。