oracle 设置不可重复,Oracle 数据库表中已有重复数据添加唯一键(唯一约束)

oracle数据库

orcale开发

oracle技术文章

Oracle 数据库表中已有重复数据添加唯一键(唯一约束)

CgpOIF5EAWWAQ0y_AAcB-fDz9P0878.png

Oracle 数据库表中已有重复数据添加唯一键(唯一约束)

问题描述

以 demo 举例,模拟真实场景。

表 TEST_TABLE 有如下字段和数据:id 是主键,code 没有设置键和索引

ID

CODE1

code1

2

code2

3

code2

4

code2

5

code3

通过以上表中数据可以看出 code 是有重复数据的,此时如果我们直接添加唯一键,会报错。

通过 PL/SQL 可视化操作,或者通过 SQL 语句添加(ENABLE NOVALIDATE 的作用是约束新增数据但不会验证已有数据):ALTER TABLE TEST_TABLE ADD CONSTRAINT UK_TEST_TABLE_CODE UNIQUE(CODE) ENABLE NOVALIDATE;

即使用到了 ENABLE NOVALIDATE 也报错,如下:

ORA-02299: cannot validate(TESTUSER.TEST_TABLE.UK_TEST_TABLE_CODE)-duplicate keys found

--Create/R

你可能感兴趣的:(oracle,设置不可重复)