绩评表(时间,员工号,绩评)
职位表(职位名,职位工资)
收入表(时间,员工号,总工资)
奖金表 (绩评,奖金)
现想创建一个触发器使得绩评每更新一条记录,收入便更新一条记录,使得总工资=职位工资+奖金
lz小白刚刚学数据库,还望指教
大神写代码可直接用拼音首字母代替

解决方案 »

  1.   

    绩评表的绩评和奖金表的绩评是关联关系吗?职位表应该有个员工号把?
    仅供参考:
    ALTER TRIGGER dbo.test ON dbo.绩评表
        FOR INSERT
    AS
        BEGIN
            UPDATE  a
            SET     总工资 = SUM(d.职位工资 + c.奖金)
            FROM    收入表 a
                    JOIN ( SELECT TOP 1
                                    *
                           FROM     Inserted
                         ) b ON a.员工号 = b.员工号
                    JOIN 奖金表 c ON b.绩评 = c.绩评
                    JOIN 职位表 d ON a.员工号 = d.员工号;
        END;
    GO
      

  2.   

    ALTER TRIGGER 工资更新 ON dbo.绩评
        FOR INSERT
    AS
        BEGIN
            UPDATE  收入
            SET     总工资 = SUM(职务.职位工资 + 奖金.奖金)
            FROM    收入,职务,奖金,员工,绩评
                    JOIN ( SELECT TOP 1
                                    *
                           FROM     Inserted
                         ) b ON 员工.员工号 = 绩评.员工号
                    JOIN 奖金 c ON b.绩评 = c.绩评
                    JOIN 职务 d ON 员工.员工号 = 收入.员工号;
        END;
     
     
    GO
    我改成了这个样子,但是员工.员工号和收入.员工号提示无法绑定由多个部分组成的标识符,能麻烦您再帮我看一下吗,小白做作业太痛苦了
      

  3.   

    如果用from多个表这种形式,要这样:from 表1,表2 where 表1.id = 表2.id
    要用join的话,应该是from 表1 join 表2 on 表1.id = 表2.id
      

  4.   

    是的,我改了,ALTER TRIGGER [dbo].[工资更新] ON [dbo].[绩评]
        FOR INSERT
    AS
        BEGIN
            UPDATE  收入
            SET     总工资 = d.职位工资 + c.奖金
            FROM    收入
                    JOIN ( SELECT TOP 1
                                    *
                           FROM     Inserted
                         ) b ON 收入.员工号 = b.员工号
                    JOIN 奖金 c ON b.绩评 = c.绩评
                    JOIN 职务 d ON b.员工号 = 收入.员工号
    JOIN 绩评 e ON e.员工号 = 收入.员工号
      JOIN 员工 f ON f.员工号 = 收入.员工号;;
        END;
    还是实现不了这个功能,我是不是写错了?
    能不能帮我再写一下sql。。困扰一天了!谢谢!
      

  5.   

    给些测试数据吧,我建表写触发器。
    http://bbs.csdn.net/topics/391996442