绩评表(时间,员工号,绩评)
职位表(职位名,职位工资)
收入表(时间,员工号,总工资)
奖金表 (绩评,奖金)
现想创建一个触发器使得绩评每更新一条记录,收入便更新一条记录,使得总工资=职位工资+奖金
lz小白刚刚学数据库,还望指教
大神写代码可直接用拼音首字母代替
职位表(职位名,职位工资)
收入表(时间,员工号,总工资)
奖金表 (绩评,奖金)
现想创建一个触发器使得绩评每更新一条记录,收入便更新一条记录,使得总工资=职位工资+奖金
lz小白刚刚学数据库,还望指教
大神写代码可直接用拼音首字母代替
仅供参考:
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
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
我改成了这个样子,但是员工.员工号和收入.员工号提示无法绑定由多个部分组成的标识符,能麻烦您再帮我看一下吗,小白做作业太痛苦了
要用join的话,应该是from 表1 join 表2 on 表1.id = 表2.id
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。。困扰一天了!谢谢!
http://bbs.csdn.net/topics/391996442