如何把update,insert等等这些触发语句结合运行不会报错!?

yeshucheng 2005-08-29 04:42:07
Drop Trigger TR_GoodsBasicInfo_Upd
;
Create Trigger TR_GoodsBasicInfo_Upd On BM_GoodsBasicinfo
For Update
As
IF Update(GBI_Deleted) And (Select GBI_Deleted From inserted)=1
--删除(台站删除是设置GBI_Deleted=1的标志)
Begin
Insert Into sc_materiallog (pk,tablename,flag,status)
Select GBI_ID,'BM_GoodsBasicinfo','2','0' From inserted Where GBI_Deleted=1
End
Else
--修改
IF (Update(GBI_GCode) Or Update(GBI_GForName) Or Update(GBI_GName) Or Update(GBI_GRemark)
Or Update(GBI_GType) Or Update(GBI_GStandard) Or Update(GBI_Gunit) Or Update(GBI_Deleted))

Begin
Insert Into sc_materiallog(pk,tablename,flag,status)
Select GBI_ID,'BM_GoodsBasicinfo','1','0' From inserted
End
;

--添加数据
Drop Trigger TR_GoodsBasicInfo_Add
;

Create Trigger TR_GoodsBasicInfo_Add On BM_GoodsBasicinfo
For Insert
As
Insert Into sc_materiallog (pk,tablename,flag,status)
Select GBI_ID,'BM_GoodsBasicinfo','0','0' From inserted
;

--删除数据
Drop Trigger TR_GoodsBasicInfo_Del
;

Create Trigger TR_GoodsBasicInfo_Del On BM_GoodsBasicInfo
For Delete
As
Insert Into sc_materiallog (pk,tablename,flag,status)
Select GBI_ID,'BM_GoodsBasicInfo','2','0' From deleted
;
怎么把以上的触发器一起运行不报错?
...全文
100 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
lovcal 2005-08-29
  • 打赏
  • 举报
回复
libin_ftsafe(子陌红尘)好快

关注……
zengzhengliang 2005-08-29
  • 打赏
  • 举报
回复
应该不会哦。
hsj20041004 2005-08-29
  • 打赏
  • 举报
回复
Create Trigger TR_GoodsBasicInfo_Upd On BM_GoodsBasicinfo
For Update,insert,delete
If exists(select * from inserted) and exists(select * from deleted)-----update
begin
IF Update(GBI_Deleted) And (Select GBI_Deleted From inserted)=1
--删除(台站删除是设置GBI_Deleted=1的标志)
Begin
Insert Into sc_materiallog (pk,tablename,flag,status)
Select GBI_ID,'BM_GoodsBasicinfo','2','0' From inserted Where GBI_Deleted=1
End
Else
--修改
IF (Update(GBI_GCode) Or Update(GBI_GForName) Or Update(GBI_GName) Or Update(GBI_GRemark)
Or Update(GBI_GType) Or Update(GBI_GStandard) Or Update(GBI_Gunit) Or Update(GBI_Deleted))

Begin
Insert Into sc_materiallog(pk,tablename,flag,status)
Select GBI_ID,'BM_GoodsBasicinfo','1','0' From inserted
End
end
If exists(select * from inserted) and not exists(select * from deleted)-----insert
begin
Insert Into sc_materiallog (pk,tablename,flag,status)
Select GBI_ID,'BM_GoodsBasicinfo','0','0' From inserted
end
If not exists(select * from inserted) and exists(select * from deleted) -----delete
begin
Insert Into sc_materiallog (pk,tablename,flag,status)
Select GBI_ID,'BM_GoodsBasicInfo','2','0' From deleted
end
wgsasd311 2005-08-29
  • 打赏
  • 举报
回复
不太明白你的意思,但如果把insert,update,delete三个触发器合并为一个触发器,是完全可以做到的。
Create Trigger TR_GoodsBasicInfo_Upd On BM_GoodsBasicinfo
For insert,Update,delete
As
if exists(select 1 from inserted) and exists(select 1 from deleted)
begin /*这里放更新触发器代码*/

.....

end
else
if exists(select 1 from inserted)
begin /*这里放插入触发器代码*/

......

end
else
begin /*这里放删除触发器代码*/

.......

end

go
子陌红尘 2005-08-29
  • 打赏
  • 举报
回复
try:
------------------------------------------------------------------------
Create Trigger TR_GoodsBasicInfo
On BM_GoodsBasicinfo
For Insert,Update,Delete
As
Begin
If exists(select 1 from inserted) and exists(select 1 from deleted)
Begin
IF Update(GBI_Deleted) And (Select GBI_Deleted From inserted)=1
--删除(台站删除是设置GBI_Deleted=1的标志)
Begin
Insert Into sc_materiallog (pk,tablename,flag,status)
Select GBI_ID,'BM_GoodsBasicinfo','2','0' From inserted Where GBI_Deleted=1
End
Else
--修改
Begin
IF (Update(GBI_GCode) Or Update(GBI_GForName) Or Update(GBI_GName) Or Update(GBI_GRemark)
Or Update(GBI_GType) Or Update(GBI_GStandard) Or Update(GBI_Gunit) Or Update(GBI_Deleted))
Begin
Insert Into sc_materiallog(pk,tablename,flag,status)
Select GBI_ID,'BM_GoodsBasicinfo','1','0' From inserted
End
End
End
ELSE
Begin
Insert Into sc_materiallog (pk,tablename,flag,status)
Select GBI_ID,'BM_GoodsBasicinfo','0','0' From inserted

Insert Into sc_materiallog (pk,tablename,flag,status)
Select GBI_ID,'BM_GoodsBasicInfo','2','0' From deleted
End
End;

22,207

社区成员

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

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