在Dynamics CRM系统中使用触发器虽然不被官方建议,但却是解决一些疑难需求的有力工具。它也能快速的解决一些比较常用的需求,例如:编号。触发器和插件的使用背景很像,那我们什么应该怎样来对它们进行选择呢。我的建议是:如果实现的功能单一且涉及大量的Select实体操作,就选择触发器;如果实现的功较繁琐但不包含复杂的Select实体操作,就选择插件。插件和触发器还有另一个重要的区别:触发器的开发简单,没有繁杂的调试步骤,方便代码维护。接下来我们来看一个编号功能,该功能是用触发器来完成的。
操作步骤
图1
图2
图3
图4
图5
程序代码
create TRIGGER dbo.CreateNo_Campaign
ON dbo.CampaignExtensionBase
AFTER INSERT
AS
BEGIN
declare @RecordNum int,
@year int,
@month int,
@day int,
@no nvarchar(100),
@id uniqueidentifier
select @id=campaignid from inserted
select @RecordNum=COUNT(*) from Campaign
set @year=YEAR(getdate())
set @month=MONTH(getdate())
set @day=DAY(getdate())
set @no='CP-'+CONVERT(nvarchar,@year)+'-'+CONVERT(nvarchar,@month)+'-'+CONVERT(nvarchar,@day)+'-'+CONVERT(nvarchar,@RecordNum)
update Campaign set new_no=@no where Campaign.CampaignId=@id
END