Я совершенно новый на SQL Server 2012, и у меня возникла странная проблема.Ошибка создания SQL Server 2012 trigger
Я разработал триггер AFTER UPDATE
в таблице в моей базе данных. Я создал триггер в нашей среде разработки, которая представляет собой экспресс-версию SQL Server 2012, без проблем.
Теперь я должен создать тот же триггер в нашей производственной среде, который является версией SQL Server 2012 Enterprise, а сценарий создания никогда не прекращает выполнение, а триггер не создается.
Любые идеи о том, что мне нужно сделать для создания триггера?
Сценарий:
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
alter TRIGGER [dbo].[til_aks_ved_betaling]
ON [dbo].[betalingsOplysningerbo]
AFTER UPDATE
AS
BEGIN
declare @snr uniqueidentifier
declare @@status varchar(1024)
SET NOCOUNT ON;
select
@snr = indmeldelse_snr
from
inserted
if UPDATE(betalingsDato)
begin
set @@status = 'Kalder med snr = ' + convert(varchar(38), @snr)
exec xp_logevent 60000, @@status , informational
exec overfoer_betalingsdato @snr
end
END
он потерпит неудачу, если более чем один ряд обновляется. Каков столбца первичного ключа в вашей таблице? –
У вашего триггера есть ** ОСНОВНАЯ ** ошибка в том, что вы, кажется, считаете, что она будет называться ** один раз за строку ** - это не ** не случай. Триггер будет срабатывать ** один раз за оператор **, поэтому, если ваши утверждения 'UPDATE' влияют на 25 строк, вы будете запускать триггер ** сразу **, но тогда' Inserted' и 'Deleted' будут содержать 25 строк , Какой из этих 25 строк будет выбран ваш код? 'select @snr = indmeldelse_snr из вставленного' - он не детерминирован. Для этого нужно переписать триггер! –
'betalingsOplysningerbo' может быть заблокирован. –