日期:2014-05-16  浏览次数:20456 次

帮忙写一个简单的触发器
本帖最后由 weixiaoaimogu 于 2014-04-08 14:30:08 编辑
写一个简单的触发器
表名  Order
列 id, type, value
当更新type时 判断如果更新后的type=1 则赋值当条记录的value=0

 求前辈帮忙
------解决方案--------------------
create trigger tri_order on order
for update 
as 
begin 
if update(type)
update a set value=0 from order as a inner join instered as i on a.id=i.id where i.type=1
end

------解决方案--------------------
引用:
Quote: 引用:

Quote: 引用:

Quote: 引用:

create trigger tri_order on order
for update 
as 
begin 
if update(type)
update a set value=0 from order as a inner join instered as i on a.id=i.id where i.type=1
end

你好,用你的这个执行报错,我的sql是2000的不知道是不是这个问题
消息 156,级别 15,状态 1,过程 tri_order,第 1 行
在关键字 'order' 附近有语法错误。
消息 156,级别 15,状态 1,过程 tri_order,第 6 行
在关键字 'order' 附近有语法错误。


改成这样试试,加上一个括号,因为order 是关键字:
create trigger tri_order on [order]
for update 
as 
begin 
if update(type)
update a set value=0 from [order] as a inner join instered as i on a.id=i.id where i.type=1
end

你好 这样改可以创建了 但是修改Order表记录的值的时候报错了
消息 208,级别 16,状态 1,过程 tri_orderT,第 6 行
对象名 'instered' 无效。路途坎坷


再修改一下,字母写错了,修改为inserted:
create trigger tri_order on [order]
for update 
as 
begin 
if update(type)
update a set value=0 from [order] as a inner join inserted as i on a.id=i.id where i.type=1
end

------解决方案--------------------
引用:
Quote: 引用:

Quote: 引用:

Quote: 引用:

create trigger tri_order on order
for update 
as 
begin 
if update(type)
update a set value=0 from order as a inner join instered as i on a.id=i.id where i.type=1
end

你好,用你的这个执行报错,我的sql是2000的不知道是不是这个问题
消息 156,级别 15,状态 1,过程 tri_order,第 1 行
在关键字 'order' 附近有语法错误。
消息 156,级别 15,状态 1,过程 tri_order,第 6 行
在关键字 'order' 附近有语法错误。


改成这样试试,加上一个括号,因为order 是关键字:
create trigger tri_order on [order]
for update 
as 
begin 
if&nb