如果我在表上创建了“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
再次观察触发并不一定是语法糖的设计
触发器中的WHILE循环是一个非常糟糕的主意,并且是DB设计的代码异味。如果你的设计**需要**,那么某个地方的事情就会变得非常糟糕。 – JNK
是的,这是我所知道的,但似乎是处理插入多行的可能性的唯一解决方案。正如我在SQL 2005标准工作。 – GoldBishop
如果你发布你的代码,那么也许有人能够向你展示不同的可能性。 –