首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > SQL Server >

高人请帮看看-这个触发器,应该如何写呢

2012-02-08 
高人请帮看看---------------这个触发器,应该怎么写呢?是这样的,有一个Review的表,当这个表里有新增记录,

高人请帮看看---------------这个触发器,应该怎么写呢?
是这样的,有一个Review的表,当这个表里有新增记录,如果status='批准'后,则在应收款表AR
中产生一条记录,记录里要调用另一个主表Project里的相同ProjectNO的信息.

全部有主键的,
为什么我在SQL企业管理器里,就可以正常,但如果是DELPHI里操作时,会报错呢?
错误为:"无法为更新定位行,一些值已经改变"

高人帮分析一下,谢了,

SQL code
CREATE TRIGGER [NewArPay] ON [dbo].[Review] AFTER insertAS--SET   NOCOUNT   ON   if @@rowcount = 0 --如果影响的行数为 0,则结束触发器运行,避免占用资源      return    declare @name nvarchar(20)    select @name = ResultStatus from inserted    if @name = '批准'           begin        Insert into AR(DueDate,ProjectNO,ClientID,ClientName,Type,Cost,Remark)         select enddate,ProjectNO,clientid,clientname,'管理费',cost ,'系统自动生成' from Project        where status='申请中' and ProjectNO in (Select ProjectNO from Inserted )           endgo


[解决办法]
SQL code
CREATE TRIGGER [NewArPay] ON [dbo].[Review] AFTER insertAS--SET   NOCOUNT   ON   if @@rowcount = 0 --如果影响的行数为 0,则结束触发器运行,避免占用资源      return                    begin        Insert into AR(DueDate,ProjectNO,ClientID,ClientName,Type,Cost,Remark)         select enddate,ProjectNO,clientid,clientname,'管理费',cost ,'系统自动生成' from Project        where status='申请中' and ProjectNO in (Select ProjectNO from Inserted WHERE ResultStatus='批准')           endgo 

热点排行