请问一个表的update能同时触发两个触发器吗?在线等待,谢谢!

crazycsu 2004-10-14 08:07:11
如题!
...全文
341 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
crazycsu 2004-10-15
  • 打赏
  • 举报
回复
谢谢楼上的支持!
yesyesyes 2004-10-15
  • 打赏
  • 举报
回复
每个表的触发器个数仅受数据库中的对象个数限制,数据库对象包括所有的表、视图、存储过程、扩展存储过程、触发器、规则、默认值及约束。一个数据库中所有对象的总数不得超过 2,147,483,647。
crazycsu 2004-10-14
  • 打赏
  • 举报
回复
找不出原因,那位遇到过类似的问题没有呀!
相应的代码:
INSERT INTO Node_TroubleClass_Table (Record_Id,Record_Date,Operation_Type_Id,TroubleClass_Id,Restore_Result_Id,Area_Zone_Port,Area_Zone_Port_JiJia)
Select a.Record_Id,a.Record_Date,a.Operation_Type_Id,b.TroubleClass_Id,a.Restore_Result_Id,Area_Zone_Port=case when charindex('-',a.DataPort_Number)>0 then Substring(a.DataPort_Number,1,charindex('-',a.DataPort_Number)) else a.DataPort_Number end,Area_Zone_Port_JiJia = case when charindex('-S',a.DataPort_Number)>0 then Substring(a.DataPort_Number,1,charindex('-S',a.DataPort_Number)) else a.DataPort_Number end
From INSERTED as a join TroubleClass_RestoreClass_Table as b on a.Restore_Result_Id = b.Restore_Result_Id
单独测试是没问题的。。。。。。。。。。。。。。。


而且系统怎么会自动将触发器删除呢?
crazycsu 2004-10-14
  • 打赏
  • 举报
回复
现在正在查找中。。。。。。。。
deodarsydn 2004-10-14
  • 打赏
  • 举报
回复
不可能吧,是否其它原因!
crazycsu 2004-10-14
  • 打赏
  • 举报
回复
是真的,在没触发事件之前,我查看了数据库中所有的触发器,都有,但当满足触发条件后,发现触发器Update_Node_TroubleClass_Table没触发,在查看数据库中的触发器,发现Update_Node_TroubleClass_Table不在列表中。。。。。。。。。不知为什么?
是不是还要设置参数什么的?
victorycyz 2004-10-14
  • 打赏
  • 举报
回复
触发器被删除掉了?不会吧?
crazycsu 2004-10-14
  • 打赏
  • 举报
回复
请问我现在遇到的现象是什么原因造成的:

IF EXISTS (SELECT name From sysobjects WHERE name = 'Update_OFOPTD_Statistics_Table' AND TYPE = 'TR')
drop TRIGGER Update_OFOPTD_Statistics_Table
GO

CREATE TRIGGER Update_OFOPTD_Statistics_Table
ON Trouble_Record_Table
FOR Update
AS
INSERT INTO OFOPTD_Statistics_Table (Record_Date,Operation_Type_Id,Office_Name,Trouble_Name,Restore_Result_Name,Complaint_sum)
Select Record_Date,Operation_Type_Id,Office_Name,Trouble_Name,Restore_Result_Name,count(*)
FROM INSERTED GROUP BY Record_Date,Operation_Type_Id,Office_Name,Trouble_Name,Restore_Result_Name
ORDER By Record_Date



/******************** CREATE Update_Node_TroubleClass_Table Trigger ****************/
IF EXISTS (SELECT name From sysobjects where name = 'Update_Node_TroubleClass_Table' and type = 'TR')
Drop Trigger Update_Node_TroubleClass_Table
GO

CREATE TRIGGER Update_Node_TroubleClass_Table
ON Trouble_Record_Table
FOR Update
AS
INSERT INTO Node_TroubleClass_Table (Record_Id,Record_Date,Operation_Type_Id,TroubleClass_Id,Restore_Result_Id,Area_Zone_Port,Area_Zone_Port_JiJia)
Select a.Record_Id,a.Record_Date,a.Operation_Type_Id,b.TroubleClass_Id,a.Restore_Result_Id,Area_Zone_Port=case when charindex('-',a.DataPort_Number)>0 then Substring(a.DataPort_Number,1,charindex('-',a.DataPort_Number)) else a.DataPort_Number end,Area_Zone_Port_JiJia = case when charindex('-S',a.DataPort_Number)>0 then Substring(a.DataPort_Number,1,charindex('-S',a.DataPort_Number)) else a.DataPort_Number end
From INSERTED as a join TroubleClass_RestoreClass_Table as b on a.Restore_Result_Id = b.Restore_Result_Id

我现在针对表trouble_Record_Table 的update建了如上两个触发器,但当触发器满足条件时,系统自动将第二个触发器给删除了,请问这是为什么?
谢谢大虾!
victorycyz 2004-10-14
  • 打赏
  • 举报
回复
可以。
Andy__Huang 2004-10-14
  • 打赏
  • 举报
回复
可以的﹐但一個表帶兩個觸器不好﹐對查詢速度﹐性能都有影響

27,579

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 应用实例
社区管理员
  • 应用实例社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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