나는 테이블에 이미있는 날짜로 삽입 된 레코드를 차단하는 트리거를 만들었습니다.쉽게 방아쇠
CREATE TABLE [dbo].[SpecialOffers](
[SPO_SpoId] [int] IDENTITY(1,1) NOT NULL,
[SPO_DateFrom] [datetime] NOT NULL,
[SPO_DateTo] [datetime] NOT NULL)
테이블이 비어 있지만, 이러한 기록을 삽입하려고 할 때 :
CREATE TRIGGER [dbo].[SpecialOffers_Insert]
ON [dbo].[SpecialOffers]
FOR INSERT,UPDATE
AS
SET NOCOUNT ON
IF EXISTS (SELECT * FROM inserted WHERE SPO_DateFrom IN (SELECT SPO_DateFrom FROM dbo.SpecialOffers))
BEGIN
RAISERROR('Error. ', 16, 1)
ROLLBACK TRAN
SET NOCOUNT OFF
RETURN
END
SET NOCOUNT OFF
는 테이블에 추가
INSERT INTO dbo.SpecialOffers (SPO_DateFrom, SPO_DateTo) VALUES ('2015-01-15','2015-01-15')
을 나는 트리거에서 오류가 발생했습니다. 오류가 발생하지 않도록 트리거를 어떻게 수정해야합니까?
에 라인
변경? 트리거는 삽입하기 전에 (레코드가 테이블에 실제로 추가되기 전) 또는 삽입 후 (레코드가 이미 테이블에 추가되고 SELECT에 의해 사용자에게 표시되는 경우) 실행할 수 있습니다. – Dmitry
왜 고유 제한을 적용하지 않는 것이 좋을까요? –