You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何添加Name与DOB联合唯一约束限制重复数据入库?

解决Name与DOB组合唯一的约束实现问题

步骤1:先清理表中已存在的重复数据

你的表中已经存在Name和DOB组合重复的记录(Tony + 18/09/1980),直接添加唯一约束会失败,必须先删除重复项。

假设你要保留每条重复组合中的第一条记录,可执行以下SQL(以SQL Server为例):

WITH DuplicateRecords AS (
    SELECT 
        Name, 
        DOB,
        ROW_NUMBER() OVER (PARTITION BY Name, DOB ORDER BY (SELECT NULL)) AS RowNum
    FROM dbo.lecturer
)
DELETE FROM DuplicateRecords WHERE RowNum > 1;

这段SQL会给每个Name+DOB组合的记录编号,只保留编号为1的记录,删除其余重复项。

步骤2:添加组合唯一约束

清理完重复数据后,执行你原来的SQL语句即可添加约束:

ALTER TABLE dbo.lecturer
ADD CONSTRAINT unique_name_dob UNIQUE(Name, DOB);

添加成功后,后续如果插入或更新数据时出现Name和DOB完全重复的情况,数据库会直接拦截并抛出错误。

验证效果

此时你再插入示例中的数据:

  • Tony 18/09/1980 maths:正常入库
  • sony 18/09/1980 english:正常入库
  • Tony 19/01/1990 maths:正常入库
  • Tony 18/09/1980 science:会被数据库拦截(因为Name+DOB组合已存在)
  • halo 17/6/1970 science:正常入库

完全符合你要求的“允许Name重复,但同一Name对应的DOB不能重复”的规则。

内容的提问来源于stack exchange,提问作者pylearner

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.05 08:42:37