Member 12860526 Ответов: 1

Ниже триггер работает при обновлении одной строки, но терпит неудачу при обновлении нескольких строк. Любая помощь будет оценена по достоинству. Спасибо


Создать триггер [dbo].[trStudentlMealPlanUpdate]
На [dbo].[tblStudent]
ДЛЯ ОБНОВЛЕНИЙ
АС
НАЧАТЬ
IF @@ROWCOUNT = 0 RETURN;
УСТАНОВИТЕ NOCOUNT ON;
Если обновление(lMealPlan)
НАЧАТЬ
Объявить @значение типа int, @старого значения ИНТ;
SET @NewValue = (выберите lMealPlan из Inserted);
SET @OldValue = (SELECT lMealPlan FROM Deleted);
Если @Значениев &ЛТ;&ГТ; @старого значения
НАЧАТЬ
Вставить в tblMealPlanChange (dIDNumber, lMealPlan, lOldMealPlan, lMealsThisPeriod, lOldMealsThisPeriod, dtDate)
ЦЕННОСТИ(
(Выберите dIDNumber из вставленного),
(Выберите lMealPlan из вставленного),
(Выберите lMealPlan из списка удаленных),
(Выберите lMealsThisPeriod из вставленного),
(Выберите lMealsThisPeriod из списка удаленных),
функция GETDATE()
);
ВЕРНУТЬ;
КОНЕЦ
КОНЕЦ
КОНЕЦ

ГО

Что я уже пробовал:

Создать триггер [dbo].[trStudentlMealPlanUpdate]
На [dbo].[tblStudent]
ДЛЯ ОБНОВЛЕНИЙ
АС
НАЧАТЬ
IF @@ROWCOUNT = 0 RETURN;
УСТАНОВИТЕ NOCOUNT ON;
Если обновление(lMealPlan)
НАЧАТЬ
Объявить @значение типа int, @старого значения ИНТ;
SET @NewValue = (выберите lMealPlan из Inserted);
SET @OldValue = (SELECT lMealPlan FROM Deleted);
Если @Значениев &ЛТ;&ГТ; @старого значения
НАЧАТЬ
Вставить в tblMealPlanChange (dIDNumber, lMealPlan, lOldMealPlan, lMealsThisPeriod, lOldMealsThisPeriod, dtDate)
ЦЕННОСТИ(
(Выберите dIDNumber из вставленного),
(Выберите lMealPlan из вставленного),
(Выберите lMealPlan из списка удаленных),
(Выберите lMealsThisPeriod из вставленного),
(Выберите lMealsThisPeriod из списка удаленных),
функция GETDATE()
);
ВЕРНУТЬ;
КОНЕЦ
КОНЕЦ
КОНЕЦ

ГО

1 Ответов

Рейтинг:
4

barneyman

вам нужно создать курсор на вставленном/удаленном и пройти через него