Något så här:
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
Det är bara för att infoga, du kanske vill överväga uppdateringar också.
Uppdatera
Ett enklare sätt skulle vara att bara skapa en unik begränsning på bordet, detta kommer också att genomdriva den för uppdateringar också och ta bort behovet av en utlösare. Gör bara:
ALTER TABLE [dbo].[TableName]
ADD CONSTRAINT [UQ_ID_Name_Date] UNIQUE NONCLUSTERED
(
[Name], [Date]
)
och då är du i affärer.