我正在工作SQL Server 2008R2,我有下表
SQL Server 2008R2
ID Name date 1 XYZ 2010 2 ABC 2011 3 VBL 2010
现在我想防止插入,如果我有一个数据,尽管ID不同但存在数据
ID Name date 4 ABC 2011
请指导我如何编写此触发器。
像这样的东西:
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
那只是为了插入,您可能也想考虑更新。
更新
一种更简单的方法是在表上创建唯一约束,这也将强制它进行更新并消除对触发器的需求。做就是了:
ALTER TABLE [dbo].[TableName] ADD CONSTRAINT [UQ_ID_Name_Date] UNIQUE NONCLUSTERED ( [Name], [Date] )
然后你就可以做生意。