Oracle唯一约束和主键不为null

Oracle唯一约束和主键不为null,oracle,constraints,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

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

我有以下几点

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

除了主键之外,您还可以有一个唯一的约束,但是消息表明您已经添加了这样的约束

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

A:是的:

  • 一个表只能有一个主键

  • 主键可以由多列组成(“复合主键”)

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

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

第1行错误:ORA-02261:此类唯一或主键已存在 在桌子上

检查你的模式。您已经获得了主键,和/或已经定义了相同的唯一约束

例如:


从dba_索引中选择索引_名称,其中表_名称='BRANCH'显示?我正在尝试删除它,但不允许删除,删除操作未成功,原因如下:
ORA-02429:无法删除用于强制执行唯一/主键的索引
此属性仅设置为唯一,不属于主键,此外,问题似乎出在哪里,第1行的约束似乎处于不可用状态
错误:ORA-01502:索引“1146815.分支名称”或此类索引的分区处于不可用状态
请尝试删除约束而不是索引。索引是在创建唯一约束时隐式创建的。在最坏的情况下,删除表并重新创建它。首先通过将数据复制到第二个表来备份数据:
create table backup\u BRANCH as select*from BRANCH
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