0
У меня есть тест в моем триггере, который отлично работает для 1 строки, но я не могу понять, как заставить его отказаться от обновления, если несколько строк будут отредактированы.триггер, запрещающий обновление для нескольких строк
Текущий код:
CREATE TRIGGER forecasting.sitenametest
ON forecasting.sitenames
AFTER UPDATE
AS
BEGIN
if @@ROWCOUNT = 0
return
SET nocount ON;
DECLARE @test INT
DECLARE @SiteTest CHAR(8)
SELECT @SiteTest = i.sitename FROM inserted i
SET @test = CASE
WHEN @SiteTest = 'NA ' THEN 1
WHEN OtherTest.. THEN 1
ELSE 0
END
IF @test = 0
BEGIN
ROLLBACK
RAISERROR('Site code not in correct format',16,1)
END
END
Вторичные тесты не так просто, как быть в состоянии использовать 'в'. Кроме того, не следует проверять тест на предыдущую строку. – SeanC
Ну, как бы я знал, что по вашему вопросу? @@ ROWCOUNT возвращает предыдущий счетчик строк. –
Первый тест гарантирует, что что-то обновлено, поэтому он не запускается с помощью «обновления», когда 1 = 0', но я не мог понять, как изменить тестовую работу с более чем одной строкой. Ваш ответ заставил меня в правильном направлении, так как я смог сделать «Выбрать * из вставленного» и сохранить этот номер строки, а затем предоставленный вами оператор select позволил мне проверить, равны ли число строк. – SeanC