如果我在表上創建了「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
如果你發佈你的代碼,那麼也許有人能夠向你展示不同的可能性。 –