Một cái gì đó như thế này:
CREATE TRIGGER MyTrigger ON dbo.MyTable
AFTER INSERT
AS
if exists ( select * from table t
inner join inserted i on i.name=t.name and i.date=t.date and i.id <> t.id)
begin
rollback
RAISERROR ('Duplicate Data', 16, 1);
end
go
Đó chỉ là để chèn, bạn cũng có thể muốn xem xét các bản cập nhật.
Cập nhật
Một cách đơn giản hơn là chỉ cần tạo một ràng buộc duy nhất trên bảng, điều này cũng sẽ thực thi nó cho các bản cập nhật và loại bỏ sự cần thiết của trình kích hoạt. Chỉ cần làm:
ALTER TABLE [dbo].[TableName]
ADD CONSTRAINT [UQ_ID_Name_Date] UNIQUE NONCLUSTERED
(
[Name], [Date]
)
và sau đó bạn sẽ kinh doanh.