Qualcosa del genere:
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
È solo per inserimento, potresti prendere in considerazione anche gli aggiornamenti.
Aggiorna
Un modo più semplice sarebbe semplicemente creare un vincolo univoco sul tavolo, questo lo applicherà anche per gli aggiornamenti ed eliminerà la necessità di un trigger. Basta fare:
ALTER TABLE [dbo].[TableName]
ADD CONSTRAINT [UQ_ID_Name_Date] UNIQUE NONCLUSTERED
(
[Name], [Date]
)
e poi sarai in affari.