sql 2000 有没有before触发器

来源:百度知道 编辑:UC知道 时间:2024/06/15 15:38:37
sql 2000 有没有before触发器
create trigger insert_teacher
on teacher
instead of insert
as
update teacher
set salary=4000
from inserted newteacher
where newteacher.salary<4000
go

insert into teacher
values('003','prince',2000)

select *
from teacher

没有结果呀????

是算法的问题,你只是更新了inserted表中的数据,但是更新完后并没有将更新后的数据插入表中。

解决办法如下,

CREATE trigger insert_teacher
on dbo.Teacher
instead of insert
as

declare @tid char(10) --声明一个变量代表teacher id
declare @type char(10) --声明一个变量代表你的第二个字段(就是你语句中值为price的那个字段)
declare @sala int --声明一个变量代表teacher salary

select @tid=TID,@type=Type,@sala=salary from inserted newteacher --先将inserted表中的插入的值取出,一次赋值给刚才声明的变量

if(@sala<4000) --判断工资是否小于4000
begin --小于的话将值设为4000后,在插入teacher表
set @sala=4000
insert into teacher values(@tid,@type,@sala)
end
else --大于的话直接插入
begin
insert into teacher values(@tid,@type,@sala)
end