如果我在表上创建了“After Insert”触发器并且在该触发器中我执行了一个While循环以迭代“可能”多行,那么处理负载会带来什么?
最终结果是我将99.999%的时间只有1行,但由于未来是不可预测的,我还希望能够处理多行被插入。
触发器型号: 1)将信息插入表中 2)通过存储过程(如果可能)创建特定于客户端的视图
你说什么? :)
尚未完全开发,但这是我正在寻找的设计,可能不是结构上合理,但应该得到交叉点。
CREATE TRIGGER dbo.New_Client_Setup
ON dbo.client
AFTER INSERT
AS
BEGIN
SET NOCOUNT ON;
--Fill Temp Table
select * into #clients
from inserted
--Iterate through Temp Table
While (select count(*) from #clients) <> 0 BEGIN
declare @id int, @clnt nvarchar(10)
select top(1)
@id = id
, @clnt = short
order by id desc
Execute dbo.sp_Create_View_Client ( @id, @clnt )
-- Drop used ID
delete from #clients
where id = @id
END
Drop table #clients
END
GO
再次,观察触发器的设计不一定是语法糖
答案 0 :(得分:0)
设计明智,阅读评论,我认为你并不需要在触发器中这样做。我会说你应该在事务中作为插入语句的一部分来做 - 即执行插入,然后执行你想要做的循环(不管那样做 - 执行dbo.sp_Create_View_Client)......
我要提到的第二件事是dbo.sp_Create_View_Client究竟在做什么 - 它是否必须依赖于插入?意思是,如果插入工作正常,触发器失败会发生什么?我可以在一个事务中完成整个插入和执行SP,以保持数据完整性。