Триггер Sql Server не выполняется для нескольких строк

#sql #sql-server #tsql #triggers

#sql #sql-server #tsql #триггеры

Вопрос:

Я пытаюсь вставить строки в таблицу, выбрав строки из другой таблицы. В таблице есть триггер, который обрабатывает все строки, вставленные с помощью курсора. но когда я выполняю insert, он обрабатывает только 1 строку, пока вставлено несколько строк. Вот код, который у меня есть прямо сейчас. Я что-то упустил?

     INSERT INTO <table>(<columns>) VALUES
    SELECT <columns>
    FROM <table> WHERE <condition> ORDER BY <column>


    ALTER TRIGGER <trgName>
    ON <table>
    AFTER INSERT
    AS
    BEGIN

   declare cur_inserted cursor for select <col1>,<col2> from inserted
   open cur_inserted

   fetch next from cur_inserted into @var1,@var2
   while @@fetch_status = 0
   begin

       ---- LOGIC to process each row here

   fetch next from cur_inserted into @schedule_nbr,@stn_cd
   end

   close cur_inserted
    deallocate cur_inserted
 END
  

Спасибо,

Jignesh

Комментарии:

1. Что делает ваша «ЛОГИКА для обработки каждой строки здесь»? Также, пожалуйста, опубликуйте полный код. Одна часть выполняет into @schedule_nbr,@stn_cd , а другая into @var1,@var2 . Похоже, это должно сработать, если это просто ошибка, допущенная при ее очистке перед публикацией.

2. Предложение INSERT VALUES недопустимо при использовании SELECT . Это просто опечатка?

3. Привет, Мартин и Нил, извините за ошибку … оба просто опечатки. И это просто ошибка с моей логикой, я понял это через 2 часа .. извините, что потратил ваше время… Спасибо вам обоим.

4. Ваш код выглядит правильно для меня… вы УВЕРЕНЫ, что вставляется несколько строк? Вы можете попробовать записать значение @@ROWCOUNT в таблицу, чтобы убедиться.

5. На следующем шаге я перебираю эти строки и получаю несколько строк. Я только что отладил в Visual Studio. Проблема заключалась в том, что было вставлено несколько строк, но логика обработки, которую я написал в триггере для каждой новой строки, была неверной.