sql – 触发以防止插入两列的重复数据
发布时间:2021-01-25 01:54:49 所属栏目:MsSql教程 来源:网络整理
导读:我正在研究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
|
我正在研究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]
)
然后你就会开展业务. (编辑:天瑞地安资讯网_保定站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
站长推荐
- sql-server – MS SQL Server中的自定义聚合函数
- SQL Server中怎么样实现数字辅助表?一文带你看懂
- INNER JOIN和OUTER JOIN有什么区别?
- sql-server – 如何通过数据库获取特定实例的CPU
- sql-server – 增量更新后统计信息消失
- sql-server – 我可以在本地安装SQL Server Mana
- sql-server – 在仅使用文字值的WHERE子句中替换
- sql-server – 如何将主键设为AUTOINCREMENT
- sql-server-2008 – Hyper-V的4个最佳用途是什么
- sql-server – Sequence – NO CACHE vs CACHE 1
热点阅读

