日期:2014-05-20  浏览次数:20825 次

为什么这个插入触发会触发2次
CREATE     TRIGGER     Fnumber_t_ICitemCore_INSERT   ON   dbo.t_ICitemCore
WITH   ENCRYPTION
FOR   INSERT
AS

DECLARE
               
                @ItemID   int,
                @fshortnumber   varchar(100),
                @fnumber   varchar(100),
                @maxfshortnumber   varchar(100),
                @maxfnumber   varchar(100),
                @fparentid   int
               

SELECT   @ItemID=Fitemid,@fparentid=fparentid
FROM   INSERTED
if(@@rowcount=1)
begin
select   @maxfnumber=max(Fnumber)   from   t_ICitemCore   where   fparentid=@fparentid
select   @fnumber=right( '000 '+rtrim(replace(@maxfnumber, '. ', ' ')+1),5)
select   @fnumber=stuff(stuff(@fnumber,   2,   0,   '. '),   4,   0,   '. ')
select   @maxfshortnumber=right(@fnumber,3)
update   t_ICitemCore   set   fnumber=@fnumber,fshortnumber=@fshortnumber   where   fitemid=@ItemID
update   t_item   set   fnumber=@fnumber,fshortnumber=@fshortnumber,ffullnumber=@fnumber   where   fitemid=@ItemID
insert   test   values(1,2)
end

编码老是+2递增,我建了表test确实进去2条记录,这是为什么
t_ICitemCore插入记录是通过视图实现,和这个有没有关系的

------解决方案--------------------
K/3有个功能叫自动编码,这个设置在物料编辑界面(所有的核算项目编辑界面中都有,这个设置也通用于所有使用这个界面的核算项目)的中设置(好像是这个名字)页签中,只要勾上这个就能达到你所说的目的,而且还比较智能,哪需要像你这样写触发器,还给写死了(万一用户输入个不是数字的编码岂不是会出问题???),嗨……,自己好好研究去吧。