我正在研究sql Server 2008R2,我有以下表
ID Name date 1 XYZ 2010 2 ABC 2011 3 VBL 2010@H_301_4@现在我想阻止插入,如果我有一个数据虽然ID不同但数据存在
ID Name date 4 ABC 2011@H_301_4@请指导我如何编写此触发器.
解决方法
像这样的东西:
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@H_301_4@这只是插入,你可能也想考虑更新. @H_301_4@更新 @H_301_4@一种更简单的方法是在表上创建一个唯一约束,这也将强制执行更新,并消除对触发器的需要.做就是了:
ALTER TABLE [dbo].[TableName] ADD CONSTRAINT [UQ_ID_Name_Date] UNIQUE NONCLUSTERED ( [Name],[Date] )@H_301_4@然后你就会开展业务.