加入收藏 | 设为首页 | 会员中心 | 我要投稿 衡阳站长网 (https://www.0734zz.cn/)- 数据集成、设备管理、备份、数据加密、智能搜索!
当前位置: 首页 > 站长学院 > MsSql教程 > 正文

sql – 触发以防止插入两列的重复数据

发布时间:2021-01-25 04:53:40 所属栏目: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]
)

然后你就会开展业务.

(编辑:衡阳站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读