请问sqlserver中如何判断触发器是insert、update和delete?

zengzhifu2010 2011-11-10 05:17:53
1.请问sqlserver中如何判断触发器是insert、update和delete?

2.请教一下以下的这张表的update触发器怎么写?


表结构:create table ss_Item
(
Item_Id int primary key identity(1,1), --分类id
Item_Name varchar(50), --分类名称
Item_ParentId int, --父id和Item_Id 关联
Item_Leve1 int, --等级菜单
)
表数据:
item_id item_name item_ParentId Item_leve1
1 1级 -1 1
2 2级 1 2
3 3级 1 2
4 4级 2 3
5 2级 1 2
6 3级 3 3
7 5级 5 3
要求就是当对表中Item_ParentId执行update时能够对它父级菜单的Item_Leve1加1,注:后面三个字段可能有重复的数据。


请大侠帮帮忙,谢谢!
...全文
505 6 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
NBDBA 2011-11-10
  • 打赏
  • 举报
回复
2.请教一下以下的这张表的update触发器怎么写?


太复杂,不建议用触发器
NBDBA 2011-11-10
  • 打赏
  • 举报
回复
触发器可以
create trigger tr_name on tb
for update,INSERT,DELETE
as

...
GO

这需要判断是那类操作
Rotel-刘志东 2011-11-10
  • 打赏
  • 举报
回复
create trigger tr_name on tb
for update
as
begin
....具体操作语句了
end
NBDBA 2011-11-10
  • 打赏
  • 举报
回复
一般触发器中用INSERTED和DELETED两个表数据有无判断哪类操作

IF EXISTS (SELECT 1 FROM INSERTED ) AND NOT EXISTS (SELECT 1 FROM DELETED)  -- 插入
BEGIN
...
END
ELSE IF EXISTS (SELECT 1 FROM INSERTED ) AND EXISTS (SELECT 1 FROM DELETED) -- 更新
BEGIN
...
END
ELSE IF NOT EXISTS (SELECT 1 FROM INSERTED ) AND EXISTS (SELECT 1 FROM DELETED) -- 删除
BEGIN
...
END

快溜 2011-11-10
  • 打赏
  • 举报
回复
create trigger tr_name on tb
for update
as
..
-晴天 2011-11-10
  • 打赏
  • 举报
回复
1.是什么类型,触发器上都标明的.
2.同表的列值更改,最好是在语句上执行,你在update上加一句Item_Leve1=Item_Leve1+1是很简单的事情,为什么非要到触发器里弄呢,还得判断是否更改.
3.如果一定要用触发器,最好用instead of 触发器.

22,302

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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