update触发器怎么写?

aiur2000 2004-12-01 01:09:15
create 。。。
for update
as
update biao set 字段1=字段2-字段3 (没有updated表,以为可以向inserted一样)
只update更新的那行怎么写?


另外update后触发update会不会死循环?
...全文
95 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
True1024 2004-12-01
  • 打赏
  • 举报
回复
不好意思,这是一个简单的例题,感觉你应该能看懂,所以就没在加注释。
aiur2000 2004-12-01
  • 打赏
  • 举报
回复
楼上的回答也不带点注释,算是看懂了,谢了。
True1024 2004-12-01
  • 打赏
  • 举报
回复
update触发器

USE pubs
IF EXISTS (SELECT name FROM sysobjects
WHERE name = 'trTitles_Upd' AND type = 'TR')
DROP TRIGGER trTitles_Upd
GO


--创建触发器(如果更新的是price,则显示相应信息)
create TRIGGER trTitles_Upd ON titles
FOR update
as

DECLARE @chvMsg varchar(255) ,@chvTitleID varchar(6) ,@mnyOldPrice MONEY,@mnyNewPrice MONEY

DECLARE cuPriceChange CURSOR
FOR
SELECT d.title_id, d.price, i.price
FROM deleted d INNER JOIN inserted i ON d.title_id = i.title_id
IF update(price)
begin
OPEN cuPriceChange
FETCH NEXT FROM cuPriceChange INTO @chvTitleID, @mnyOldPrice, @mnyNewPrice

WHILE (@@fetch_status <> -1)

begin
SELECT @chvMsg = 'The price of title ' + @chvTitleID
+ ' has changed from'
+ ' ' + CONVERT ( VARCHAR(10), @mnyOldPrice)
+ ' to ' + CONVERT ( VARCHAR(10), @mnyNewPrice)
+ ' on ' + CONVERT ( VARCHAR(30), getdate())
print @chvMsg
FETCH NEXT FROM cuPriceChange INTO @chvTitleID, @mnyOldPrice, @mnyNewPrice
Set @chvMsg = ''
end
deallocate cuPriceChange
end


--更新price
update titles set price=20 where price<11
--更新royalty
update titles set royalty=20 where royalty is null

7,763

社区成员

发帖
与我相关
我的任务
社区描述
VB 基础类
社区管理员
  • VB基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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