Oracle唯一约束和主键不为null

时间:2012-03-25 21:37:19

标签: oracle constraints

表可以具有主键属性和对另一个属性的唯一约束吗?

我有以下

CREATE TABLE BRANCH(
BRA_CODE NUMBER NOT NULL PRIMARY KEY,
BRA_NAME VARCHAR(15),
BRA_ADDR VARCHAR(30),
 CITY_ID NUMBER);

我试图添加

ALTER TABLE BRANCH ADD CONSTRAINT UNIQUE_BRANCH_NAME UNIQUE (BRA_NAME);

我收到以下错误;

ERROR at line 1:
ORA-02261: such unique or primary key already exists in the table

2 个答案:

答案 0 :(得分:5)

除主键外,您可以拥有唯一约束,但该消息表明您已添加此类约束。

答案 1 :(得分:4)

  

问:表可以具有主键属性和唯一约束   另一个属性?

答:是的:

  • 一个表只能有一个主键。

  • 主键可能包含多个列(“复合主键”)

  • 任何列都可能具有“唯一约束”,无论它是否为主键列

  • 主键始终是“唯一”,并始终具有“唯一”约束

  

第1行的错误:ORA-02261:此类唯一或主键已存在   在表格中

答:检查您的架构。您已经拥有主键,并且/或者您已经定义了相同的唯一约束。

例如:

http://www.shutdownabort.com/dbaqueries/Structure_Constraints.php

col type format a10
col cons_name format a30
select  decode(constraint_type,
        'C', 'Check',
        'O', 'R/O View',
        'P', 'Primary',
        'R', 'Foreign',
        'U', 'Unique',
        'V', 'Check view') type
,   constraint_name cons_name
,   status
,   last_change
from  dba_constraints
where  table_name like 'BRANCH'
order by 1