我有一个现有的流量管理系统(不是由我设计的),并且想要设置一个自动电子邮件以便交付证明 - 我们有应用程序将电子签名等发送到我们的Web服务器并在几个不同的表中更新相关信息。
我想现在创建一个SP,向客户发送电子邮件以提供交付详细信息。 我在一个表上创建了一个触发器,其中给出了状态和签名详细信息,即名称和gps位置。
USE [Transport_Comp1]
GO
/****** Object: Trigger [dbo].[TRG_InsertPodEmail2] Script Date: 02/22/2016 23:18:56 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER TRIGGER [dbo].[TRG_InsertPodEmail2]
ON [dbo].[DscPalletDetails]
AFTER INSERT
AS
BEGIN
-- SET NOCOUNT ON added to prevent extra result sets from
-- interfering with SELECT statements.
SET NOCOUNT ON;
insert into dbo.Pod2Email ([dwDscPalletDetailsId]
,[dwPalletIdFK]
,[dwJobItemIdFK]
,[dwLegIdFK]
,[dwDscStatusIdFK]
,[szDscStatusCode]
,[szNotes]
,[bIsCollection]
,[dtUpdateDate]
,[szScannedBarcode]
,[dwSignatureIdFK]
,[dwScanStatusIdFk]
,[nScanRef]
,[szPalletNum])
SELECT [dwDscPalletDetailsId]
,[dwPalletIdFK]
,[dwJobItemIdFK]
,[dwLegIdFK]
,[dwDscStatusIdFK]
,[szDscStatusCode]
,[szNotes]
,[bIsCollection]
,[dtUpdateDate]
,[szScannedBarcode]
,[dwSignatureIdFK]
,[dwScanStatusIdFk]
,[nScanRef]
,[szPalletNum]
FROM INSERTED
-- Insert statements for trigger here
END
我是否可以扩展PodEmail表以包含来自另一个表的数据,即帐户信息?
我想创建一个表格,我可以将其用作游标的基础,通过记录从帐户表格发送电子邮件到电子邮件 - 这是方式还是我离开基地?
任何指针都非常感激
BR
保
答案 0 :(得分:2)
如果您保持触发器简单有效,您的方法是合理的,特别是:
set nocount on
是一种很好的做法,因为某些应用程序(根据它们的编写方式)可能会被报告给它们的多行计数混淆。触发插入将根据rowcount
的先前设置返回正确的行计数或无行计数。当触发器终止时,此设置会自动恢复为先前的值(通常与存储过程一样)。insert into
DML列。insert into
表上运行游标,而是选择要通过“email”游标处理到临时表(甚至可能是表变量)并将光标放在其上的行。表,以避免在目标insert into
表上长时间运行锁定的可能性。祝你的项目好运。