--您写的触发器没有什么问题,唯一可能出现问题的地方是下面的语句,一般是脏数据造成的
创新互联建站服务项目包括托克托网站建设、托克托网站制作、托克托网页制作以及托克托网络营销策划等。多年来,我们专注于互联网行业,利用自身积累的技术优势、行业经验、深度合作伙伴关系等,向广大中小型企业、政府机构等提供互联网行业的解决方案,托克托网站推广取得了明显的社会效益与经济效益。目前,我们服务的客户以成都为中心已经辐射到托克托省份的部分城市,未来相信会继续扩大服务区域并继续获得客户的支持与信任!
select @sFNote=FNote
from SEOrderEntry
where convert(char(20),FInterID)
+convert(char(20),FEntryID)
in(
convert(char(20),@iFOrgSaleInterID)
+convert(char(20),@iFOrgEntyrID)
);
--一般ERP里不推荐用触发器解决
创建触发器 是特殊的存储过程,自动执行,一般不要有返回值。
1、后触发器 (AFTER,FOR)先执行对应语句,后执行触发器中的语句。
2、前触发器 并没有真正的执行触发语句(insert,update,delete),而是执行触发后的语句。
3、行级触发器 (FOR EACH ROW) 在SQL server 中不存在。
扩展资料:
创建触发的语法
CREATE TRIGGER trigger_name --触发器名称
ON table_name --触发的表
[WITH ENCRYPTION]
FOR [DELETE, INSERT, UPDATE] --选择触发器类型
AS --触发后要做的语句
T-SQL语句
GO --结束标记
触发器应该在表orders上
create trigger tr_del
on orders ------错误1
after delete
as
begin
DECLARE @orderid CHAR(10);
SELECT @orderid=orderid FROM deleted; ---错误二
delete from orderdetails where orderid=@orderid ; ---错误三
end
在tb_money表中建立触发器:
CREATE TRIGGER TR_insert_tb_money ON [dbo].[tb_money]
FOR INSERT
AS
DECLARE @id NUMERIC
DECLARE @paymoney decimal
SET @id = (SELECT id FROM inserted)
SET @paymoney = (SELECT paymoney FROM inserted WHERE id = @id)
UPDATE tb_vip SET money = momey + @paymoney WHERE id = @id