У меня есть хранимая процедура, которая вставляет строки в таблицу. Намерение состоит в том, чтобы работать через вставленные строки с помощью триггера After Update, который будет рекурсивно вставлять строки в одну и ту же таблицу.
Минимальный триггер SPRO C ниже. Это работает только один раз; последующие вызовы SPRO C фактически вводят процедуру нормально, но вставки не выполняются.
В базе данных включены вложенные триггеры.
Кто-нибудь может помочь?
ALTER TRIGGER [dbo].[tr_Propogate]
ON [dbo].[EN_Propogations]
AFTER INSERT
AS
BEGIN
SET NOCOUNT ON;
DECLARE
@PropogationID int,
@ModelSection_ID int,
@ModelComponent_ID int,
@ErrorCode TinyInt;
DECLARE CurPropogate CURSOR FOR SELECT PropogationID FROM INSERTED
IF ((SELECT TRIGGER_NESTLEVEL()) > 10) RETURN
OPEN CurPropogate;
FETCH NEXT FROM CurPropogate INTO @PropogationID
WHILE @@FETCH_STATUS = 0
BEGIN
SET @ModelSection_ID = (SELECT ModelSection_ID FROM INSERTED WHERE PropogationID = @PropogationID)
SET @ModelComponent_ID = (SELECT ModelComponent_ID FROM INSERTED WHERE PropogationID = @PropogationID)
-- DISABLE TRIGGER tr_Propogate ON EN_Propogations
EXEC dbo.EN_ModelSectionPropogate @ModelSection_ID, @ModelComponent_ID, @ErrorCode OUTPUT
-- ENABLE TRIGGER tr_Propogations ON EN_Propogations
FETCH NEXT FROM CurPropogate INTO @PropogationID
END
CLOSE CurPropogate
END
ALTER PROCEDURE [dbo].[EN_ModelSectionPropogate]
@ModelSection_ID int,
@ModelComponent_ID int,
@ErrorCode TinyInt OUTPUT
AS
BEGIN
SET NOCOUNT ON;
...
INSERT INTO EN_Propogations (ModelSection_ID, ModelSection_Ref, ModelComponent_ID, ModelComponent_Ref)
SELECT * FROM ConnectedSections_CTE
END