删除一个主键并在oracle中添加另一个主键

时间:2015-10-30 00:24:58

标签: sql oracle primary-key ddl alter-table

我有一个表,我需要删除主键,这是一个复合键,并使其成为基于单个值的主键。 我放弃了原来的主键:

SQL> alter table depositor
  2  drop primary key;

  Table altered.

但是当我尝试添加新的后面时,我收到一条错误消息。

SQL> alter table depositor
   2  add primary key (account_number);

      alter table depositor
                *
      ERROR at line 1:
   ORA-02437: cannot validate (ZSMITH.SYS_C0084996) - primary key violated

PK没有掉线吗?我没有正确添加回来吗?

1 个答案:

答案 0 :(得分:3)

在现有表上,如果该表中的数据确实可用作主键(即所有值为distinct而非null),则只能创建主键。