Algo como esto:
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
Eso es solo para insertar, es posible que también desee considerar actualizaciones.
Actualizar
Una forma más sencilla sería simplemente crear una restricción única en la tabla, esto también la aplicará para las actualizaciones y eliminará la necesidad de un disparador. Solo haz:
ALTER TABLE [dbo].[TableName]
ADD CONSTRAINT [UQ_ID_Name_Date] UNIQUE NONCLUSTERED
(
[Name], [Date]
)
y entonces estarás en el negocio.