问题描述
- 数据库触发器问题,为什么触发器会出现错误
-
create trigger 月工资变动
after update on 考勤
referencing
oldrow as oldtuple,
newrow as newtuple
for each row
begin
if(oldtuple.一月份缺勤扣薪 != newtuple.一月份缺勤扣薪)
then
update 员工月工资 set 一月份工资=一月份工资-newtuple.一月份扣薪+oldtuple.一月份扣薪
where oldtuple.员工编号=员工月工资.员工编号;
end if;
end;这是一个关于工资管理数据库的触发器,考勤是一个表,当考勤表中一月份缺勤扣薪改动时,员工工资表中对应的一月份工资变化,在SQL server中出现错误,请问错误在哪?
解决方案
你这写法是oracle的吧
create TRIGGER 月工资变动
on 考勤
after update
as
begin
declare @oldName varchar(20), @newName varchar(20),@ygbh varchar(20);
select @oldName = 一月份缺勤扣薪,@ygbh=员工编号 from deleted;
select @newName = 一月份缺勤扣薪 from inserted;
if(@oldName != @newName)
begin
update 员工月工资 set 一月份工资=一月份工资-@newName+@oldName
where 员工月工资.员工编号=@ygbh;
end;
end;
解决方案二:
数据库中的所有触发器
解决方案三:
对了 我用的是SQL Sever 2008 r2
时间: 2024-10-30 11:50:15