1) Вы делаете классическую ошибку триггера 101 и обрабатываете вставленную таблицу так, как будто она содержит только одну строку.В нем будет столько строк, сколько было вставлено / обновлено, и вам придется обрабатывать это соответственно, т.е. как операцию на основе набора.
2) Вы не смешиваете SET
и SELECT
, вы используете соответствующиеone.
3) THROW
теперь рекомендуется более RAISEERROR
Следующие действия могут сделать то, что вам нужно:
IF (ROWCOUNT_BIG() = 0)
RETURN;
ELSE IF EXISTS (
SELECT * FROM inserted AS a
WHERE Label = '0'
)
BEGIN
DECLARE @Error varchar(100)
declare @Lay_Class varchar(50)
select top 1 @Lay_Class = [Lay_Class] FROM inserted where Label = '0';
set @error = 'Error: ' + @Lay_Class + ' New Lay Class, Please add to Case When on Label';
THROW 51000, @Error, 1;
ROLLBACK TRANSACTION;
END