Уникальное ограничение Oracle и первичный ключ не равны NULL - PullRequest
3 голосов
/ 26 марта 2012

Может ли таблица иметь атрибут первичного ключа и уникальное ограничение для другого атрибута?

У меня есть следующее

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 ]

5 голосов
/ 26 марта 2012

Вы можете иметь уникальное ограничение кроме первичного ключа, но сообщение указывает, что вы уже добавили такое ограничение.

4 голосов
/ 26 марта 2012

В: Может ли таблица иметь атрибут первичного ключа и уникальное ограничение для другой атрибут?

A: Да:

  • В таблице может быть не более одного первичного ключа.

  • Первичный ключ может состоять из нескольких столбцов («составной первичный ключ»)

  • Любой столбец может иметь «уникальное ограничение», независимо от того, является ли он столбцом первичного ключа

  • Первичный ключ всегда «уникален» и всегда имеет «уникальное» ограничение

ОШИБКА в строке 1: ORA-02261: такой уникальный или первичный ключ уже существует в таблице

A: Проверьте вашу схему. У вас уже есть первичный ключ и / или вы уже определили такое же уникальное ограничение.

Например:

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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...