改成这样试一下 ALTER TRIGGER [dbo].[TRG_Insert_KQ_1]
on [dbo].[AtdRecord]
FOR insert,update
as
SET NOCOUNT ON;
DECLARE @EmplID char(16),@RecDate char(10),@RecTime char(5)
BEGIN
SELECT @EmplID=EmplID,@RecDate=RecDate,@RecTime=RecTime FROM inserted
UPDATE [咯咯咯].[dbo].[KQ_Ytj_1]
SET PM8= 咯咯咯.dbo.KQ_pM(CONVERT (varchar(7),@RecDate,120)+'-'+'08',@EmplID)
WHERE EmplID=@EmplID
END

解决方案 »

  1.   

    ALTER TRIGGER [dbo].[TRG_Insert_KQ_1]
    on [dbo].[AtdRecord]
    FOR insert,update
    as
    SET NOCOUNT ON;
    DECLARE @EmplID char(16),@RecDate char(10),@RecTime char(5)
    BEGIN
    SELECT @EmplID=EmplID,@RecDate=RecDate,@RecTime=RecTime FROM inserted
    UPDATE [咯咯咯].[dbo].[KQ_Ytj_1]
    SET PM8= 咯咯咯.dbo.KQ_pM(CONVERT (varchar(7),@RecDate,120)+'-'+'08',@EmplID)
    WHERE EmplID=@EmplID
    END
      

  2.   

    前面两位的应该是正确的吧,我觉得你应该确认一下新增记录的EmpID在[咯咯咯].[dbo].[KQ_Ytj_1]表中是否存在
      

  3.   

    不要用变量,变量本身就是存储一条数据的变量,你里面也没有用循环,必然就只操作了一条数据,直接批量刷,例如:
    create TRIGGER dbo.[tr_student_insert] 
       ON  dbo.student 
       for INSERT,UPDATE
    AS 
    BEGIN
    select * from insertedupdate student_bak
    set 
    name=b.name,
    class=b.class
    from student_bak a inner join inserted b on a.no=b.noinsert into student_bak(no,name,class)
    select no,name,class from insertedEND
    GO
    前提是你的empid是外部录入的,而不是入表时自动生成,同时,如果empid不能确定唯一数据,update的时候会刷掉多条数据
      

  4.   

    直接关联表、INSERTED联接就处理了
    SQL SERVER不像ORACLE、MYSQL,触发器有For Each Row,SQL SERVER是以SETS记录的