关于SQL Server中触发器

zcm1227cn 2006-03-13 01:17:38
这是我写的一个创建触发器的代码(如下),要实现Stuff表中Position字段改变则Salary字段也跟着改变的功能
create trigger tri_test on Stuff
after update
referencing NEW AS table_after_update
OLD AS table_before_update
for each statement
begin
IF table_after_update.Position = 'Manager'
update Stuff set Salary = 5000
where StuffNum = table_after_update.stuffNum
else IF table_after_update.Position = 'Assistant'
update Stuff set Salary = 3000
where StuffNum = table_after_update.stuffNum
else IF table_after_update.Position = 'Supervisor'
update Stuff set Salary = 4000
where StuffNum = table_after_update.stuffNum
end

运行时提示出错

服务器: 消息 170,级别 15,状态 1,过程 tri_test,行 3
第 3 行: 'referencing' 附近有语法错误。

我不知道问题出在哪里?请教各位,顺便问一下正确的应该怎么写?
...全文
192 5 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
killer2005 2006-03-31
  • 打赏
  • 举报
回复
判断修改的字段可以这样:
if update(Manager)
update Stuff set Salary = 5000
...
zcm1227cn 2006-03-16
  • 打赏
  • 举报
回复
谢谢楼上的,可是我还是搞不定,哪为高手能帮我写一下这个触发器该怎么写?
lzhs 2006-03-16
  • 打赏
  • 举报
回复
你試試看吧,我也沒仔細看。
沒有時間,倉促寫的。
lzhs 2006-03-16
  • 打赏
  • 举报
回复
create trigger tri_test on Stuff after update
as
update Stuff set Salary = 5000 where Position = 'Manager'
update Stuff set Salary = 3000 where Position = 'Assistant'
update Stuff set Salary = 4000 where Position = 'Supervisor'
lzhs 2006-03-13
  • 打赏
  • 举报
回复
referencing 不适用于SQL Server~~~
具体用法可以参考SQL Server的联机帮助。

其实在SQL Server里面,inserted相当于你用到的New表,deleted相当于你用到的Old~
你做一下替换看看吧!(具体逻辑我没有看)

34,837

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧