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:是的:
- 一个表只能有一个主键
- 主键可以由多列组成(“复合主键”)
- 任何列都可能具有“唯一约束”,无论它是否为主键列
- 主键始终是“唯一的”,并且始终具有“唯一的”约束
从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