Эта строка select @Pays = REL_PAYS from inserted
делает classi c SQL Ошибка триггера сервера - при условии, что в таблице псевдо-таблицы Inserted
будет только одна строка - хотя на самом деле их может быть много.
Вам не нужен стол Inserted
для проведения теста. Вместо этого просто проверьте реальную таблицу на наличие дубликатов и, если есть откат.
Я думаю, что вы хотите:
alter trigger [dbo].[Trg_PreventDefaultDevise] on [dbo].[RELDEVISEPAYS]
after insert, update
as
begin
set nocount on;
if exists (select 1 from dbo.RELDEVISEPAYS where REL_DEFAUT = 1 group by REL_PAYS having count(*) > 1)
begin
raiserror (N'Ce pays dispose déjà d''une devise par défaut',16,1);
rollback;
end;
end