违反 UNIQUE KEY 约束;错误号:2627;输入数据没有重复[关闭]
Posted
技术标签:
【中文标题】违反 UNIQUE KEY 约束;错误号:2627;输入数据没有重复[关闭]【英文标题】:Violation of UNIQUE KEY constraint; Error number: 2627; No duplicity in input data [closed] 【发布时间】:2021-12-27 14:41:41 【问题描述】:我正在尝试更新我的 SQL 数据库,但标题中出现错误。
在异常消息中我可以找到重复的键,但我在输入数据中找不到相同的键。我错过了什么?
表格的定义在这里:
CREATE TABLE [dbo].[MLFBCodes]
(
[Id] INT IDENTITY (1, 1) NOT NULL,
[IdGroup] INT NOT NULL,
[Number] NVARCHAR(30) NOT NULL,
[Description] NVARCHAR(500) NOT NULL,
[MLFB] NVARCHAR(50) NOT NULL,
[Active] BIT NOT NULL,
[UserDefined] BIT DEFAULT ((0)) NOT NULL,
[ColumnForSearch] NVARCHAR(600) NULL,
PRIMARY KEY CLUSTERED ([Id] ASC),
UNIQUE NONCLUSTERED ([Number] ASC),
UNIQUE NONCLUSTERED ([MLFB] ASC),
UNIQUE NONCLUSTERED ([Description] ASC),
CONSTRAINT [FK_MLFBCodes_ToTable]
FOREIGN KEY ([IdGroup]) REFERENCES [dbo].[MLFBCodeGroups] ([Id])
);
这就是我要插入的内容:
没有作为重复值从数据库返回的字符串“A5E037667170010EE0”(可以在上面的控制台中看到图片)
上图中的foreach:
foreach(MLFBCode code in mLFBsForAdd)
try
db.MLFBCodes.Add(code);
db.SaveChanges();
catch (Exception ex)
怎么会这样?谢谢你的帮助!
【问题讨论】:
这个still 不是minimal reproducible example 【参考方案1】:您需要发布整个对象列表,以便我们知道哪里出了问题,但您可以在没有我们的情况下完成。我可以看到 3 列应该具有唯一值
UNIQUE NONCLUSTERED ([Number] ASC),
UNIQUE NONCLUSTERED ([MLFB] ASC),
UNIQUE NONCLUSTERED ([Description] ASC),
您必须检查列表中的这些列,它们应该是唯一且非空的
恕我直言,我不知道 Number 或 MLFB 是什么,但对我来说,Description 列应该有一个唯一的常量并不是一个好主意。
【讨论】:
不幸的是,我无法发布插入项目的整个列表,但我认为现在不需要。也许我们彼此不理解。我当前的问题是:当我根本不插入此值时,为什么数据库中所谓的重复是“A5E037667170010EE0”?插入MLFBCode实例的例子如上图(MLFB:“3VA1112-4EE32-0BF0”;编号:“L1V30075125012”;描述:“MCCB_ST160_3P............”)。关于描述栏:对我们来说最好让它独一无二,因为有两个相同的描述是不合逻辑的。 @当您放置唯一约束时,这意味着表的该列中的所有项目都应该是唯一的。您可以在数据库中已有此代码或此编号,它会导致错误。 是的,我了解 Unique 约束是什么。但是当我插入“A”时,它不能告诉我我不能插入“B”。这对我没有任何意义。我知道数据库已经包含字符串“B”(我已经找到了),但我不想重写它,因为我正在插入“A”。请耐心等待我,我不专业。谢谢:-)以上是关于违反 UNIQUE KEY 约束;错误号:2627;输入数据没有重复[关闭]的主要内容,如果未能解决你的问题,请参考以下文章
MYSQL 的 primary key 和unique key 的区别
在扩展的 Asp.Net Identity 2 错误中将角色分配给用户违反 PRIMARY KEY 约束“PK_dbo.AspNetUserRoles”