首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ORA-00001在UPDATE语句中不重复

ORA-00001在UPDATE语句中不重复
EN

Stack Overflow用户
提问于 2017-12-15 07:59:44
回答 1查看 1.6K关注 0票数 0

当它基于两个字段时,我无法理解唯一约束的逻辑。

下面的表名为DESCRIPTIONS,包括3列:ID_DESCRIPTIONNAMEID_DESCRIPTION_TYPE

现在,ID_DESCRIPTIONprimary key,并且有一个unique constraint UK_DESCRIPTION on耦合(ID_DESCRIPTIONNAME)。

如果我试图运行以下查询:

代码语言:javascript
复制
UPDATE DESCRIPTIONS SET NAME = 'USA' WHERE ID_DESCRIPTION = 9255813

我得到了一个ORA-00001异常,表示违反了唯一约束UK_DESCRIPTION

这意味着这对夫妇(9255813'USA')已经存在了,对吧?但是,我不认为这是可能的,因为ID_DESCRIPTION是一个primary key,因此是唯一的,并且查询的结果

代码语言:javascript
复制
SELECT * FROM  DESCRIPTIONS  WHERE ID_DESCRIPTION = 9255813

只返回1结果,这是我想更新的结果。我在这里不懂什么?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-12-15 08:35:59

我将猜测uk_description实际上是一个基于名称的单一列的唯一键。

“不幸的是,事实并非如此。”

好的,另一种解释是,它是一个多列键,它基于与您所想不同的一组列。(NAME, ID_DESCRIPTION_TYPE)也符合所描述的行为。

公平地说,在(NAME, ID_DESCRIPTION_TYPE)上使用一个独特的键更有意义。例如,当表是单个引用数据查找时(这是一个可怕的模型,但足够常见),这就是您想要的关键。而ID_DESCRIPTION, NAME)的复合键只会破坏主键。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47828056

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档