저는 SQL Server 2012가 새로 도입되었으며 이상한 문제가 있습니다.SQL Server 2012 트리거를 만들 때 문제가 발생했습니다.
내 데이터베이스의 테이블에 AFTER UPDATE
트리거를 개발했습니다. SQL Server 2012의 익스프레스 에디션 인 개발 환경에서 트리거를 만들었습니다. 문제 없습니다.
SQL Server 2012 Enterprise Edition의 프로덕션 환경에서 동일한 트리거를 만들어야하고 만들기 스크립트가 실행을 중지하지 않으며 트리거가 만들어지지 않습니다.
방아쇠를 만들려면 무엇을해야하는지에 대한 아이디어가 있습니까?
스크립트 : 여기
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 from inserted' - 비 결정적입니다. 이것을 고려하려면 트리거를 다시 작성해야합니다! –
'betalingsOplysningerbo'가 잠겼을 수 있습니다. –