日期:2014-05-16  浏览次数:20571 次

插入表中计算机名或用户名称;

SQL 2005数据库
在表单中增加一个字段类型为字符串,需求是当数据符合某个条件时,则该字段中自动更新该电脑的电脑名称或K3登陆账号,

CREATE TRIGGER [river_icsubcontractentry1]
ON [dbo].[ICSubContractEntry]
FOR UPDATE
AS
BEGIN
DECLARE @a int
    DECLARE @b VARCHAR(40)

-- SELECT @a= d.FMrpAutoClosed FROM inserted d
--  IF @a='1'

   BEGIN
 SET @b= HOST_NAME()   
UPDATE icsubcontractentry SET ftext5= (CASE WHEN ICE.FMrpAutoClosed='1' THEN @b ELSE ' ' END)   
  FROM ICSubContractEntry ice JOIN inserted i ON i.finterid=ice.FInterID 
 END         
END

语句如上,触发器能执行成功,但操作更新时则报错,

提示:超出了存储过程、函数、触发器或视图的最大嵌套层数(最大层数为 32);

不知道是什么问题,需要怎么写这个程序,请教大家帮忙指点,谢谢。
------解决方案--------------------
或者:

CREATE TRIGGER [river_icsubcontractentry1]
ON [dbo].[ICSubContractEntry]
FOR UPDATE
AS
BEGIN
DECLARE @a int
    DECLARE @b VARCHAR(40)

-- SELECT @a= d.FMrpAutoClosed FROM inserted d
--  IF @a='1'
   if update(FMrpAutoClosed)  --只有当FMrpAutoClosed字段update了,才会运行下面的语句
   BEGIN
  SET @b= HOST_NAME()   
  UPDATE icsubcontractentry SET ftext5= (CASE WHEN ICE.FMrpAutoClosed='1' THEN @b ELSE ' ' END)   
  FROM ICSubContractEntry ice JOIN inserted i ON i.finterid=ice.FInterID 
   END         
END