gpt4 book ai didi

oracle - 在 alter table 中创建约束而不检查现有数据

转载 作者:行者123 更新时间:2023-12-02 08:35:47 27 4
gpt4 key购买 nike

我正在尝试对随 Oracle 11g R2 提供的 OE.PRODUCT_INFORMATION 表创建约束。该约束应使 PRODUCT_NAME 独一无二。

我已经尝试过以下语句:

ALTER TABLE PRODUCT_INFORMATION
ADD CONSTRAINT PRINF_NAME_UNIQUE UNIQUE (PRODUCT_NAME);

问题是,在 OE.PRODUCT_INFORMATION 中已经存在当前存在两次以上的产品名称。执行上面的代码会抛出以下错误:

an alter table validating constraint failed because the table has
duplicate key values.

新创建的约束是否有可​​能不会用于现有表数据?我已经尝试过 DISABLED 关键字。但是当我启用约束时,我收到相同的错误消息。

最佳答案

您当然可以使用 NOVALIDATE 关键字创建一个约束来验证任何新插入或更新的记录,但不会针对旧的现有数据进行验证,例如:

ALTER TABLE PRODUCT_INFORMATION
ADD CONSTRAINT PRINF_NAME_UNIQUE UNIQUE (PRODUCT_NAME)
NOVALIDATE;

如果列上没有索引,此命令将在列上创建非唯一索引。

关于oracle - 在 alter table 中创建约束而不检查现有数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7993585/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com