重複レコードをチェックしてからレコードを更新する SQL Server 2005 にトリガーがあります。
USE [CheckeCon]
GO
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER TRIGGER [dbo].[tgUserRoleExistForUpdate] ON [dbo].[Sec_UserRoles]
INSTEAD OF Update
AS
declare @UserRoleId int, @UserId int,@RoleId int, @FromDate datetime,@ToDate datetime,@CntlCreatedBy nvarchar,@CntlModifiedAt nvarchar,@CntlCurLockNo smallint;
select @UserRoleId=i.UserRoleId from inserted i;
select @UserId=i.UserId from inserted i;
select @RoleId=i.RoleId from inserted i;
select @FromDate=i.FromDate from inserted i;
select @ToDate=i.ToDate from inserted i;
select @CntlCreatedBy=i.CntlCreatedBy from inserted i;
select @CntlModifiedAt=i.CntlModifiedAt from inserted i;
select @CntlCurLockNo=i.CntlCurLockNo from inserted i;
BEGIN
-- BEGIN TRAN
IF NOT EXISTS
(
SELECT *
FROM Sec_UserRoles SEUR
JOIN inserted i ON
SEUR.RoleId = i.RoleId
AND SEUR.UserId = i.UserId
Where i.FromDate BETWEEN SEUR.FromDate AND SEUR.ToDate
)
Update Sec_UserRoles Set UserId = @UserId,RoleId = @RoleId,FromDate = @FromDate,ToDate = @ToDate,
CntlCreatedBy = @CntlCreatedBy,CntlModifiedAt = @CntlModifiedAt,CntlCurLockNo = @CntlCurLockNo Where UserRoleId = @UserRoleId
--Commit;
Else
RAISERROR('User Role Association Already Present',15,1);
--ROLLBACK;
End
しかし、問題は、トリガーで指定したエラーが発生しただけでレコードを更新できないことです。トリガーを使用してレコードを更新するにはどうすればよいですか?