Как Вы добавляете первичный ключ стол. Пожалуйста, см. Ниже, я не получил никаких проблем, когда я добавил его. Надеюсь, я правильно понял ваш запрос или вы хотели достичь чего-то другого.
Чтобы проиллюстрировать, что сказал @sstan, я покажу вам одну демоверсию. Надеюсь, это прояснит ваши сомнения.
Я создал таблицу без каких-либо ПК.
CREATE TABLE DIM_CLIENT (
ID_DIM_CLIENT NUMBER(*,0) NOT NULL ENABLE ,
NOMCOMPLET_CLT VARCHAR2(40 BYTE),
ADRESSE_CLT VARCHAR2(20 BYTE),
NUM_TEL VARCHAR2(20 BYTE),
EMAIL_CLT VARCHAR2(50 BYTE),
TYPE_CLT VARCHAR2(50 BYTE)
);
Затем я вставил ниже набор записей:
Insert into DIM_CLIENT (ID_DIM_CLIENT, NOMCOMPLET_CLT, ADRESSE_CLT, NUM_TEL, EMAIL_CLT, TYPE_CLT)
Values (1, 'AAA', 'BBB', 'CCC', '[email protected]', 'EEEE');
Insert into DIM_CLIENT (ID_DIM_CLIENT, NOMCOMPLET_CLT, ADRESSE_CLT, NUM_TEL, EMAIL_CLT, TYPE_CLT)
Values (1, 'BBB', 'CCC', 'DDD', '[email protected]', 'FFF');
Insert into DIM_CLIENT (ID_DIM_CLIENT, NOMCOMPLET_CLT, ADRESSE_CLT, NUM_TEL, EMAIL_CLT, TYPE_CLT)
Values (1, 'CCC', 'DDD', 'EEE', '[email protected]', 'GGG');
COMMIT;
Если вы смотрите выше я вставил записи в таблицу с ID_DIM_CLIENT
как «1» для всех записей
Теперь я пытаюсь добавить основной ключ к таблице:
alter table DIM_CLIENT add primary key (ID_DIM_CLIENT) ;
И я получаю ошибку:
SQL> alter table DIM_CLIENT add primary key (ID_DIM_CLIENT) ;
alter table DIM_CLIENT add primary key (ID_DIM_CLIENT)
*
ERROR at line 1:
ORA-02437: cannot validate (T541682.SYS_C001225687) - primary key violated
Я надеюсь, что мой демо дал понять, где проблема. Его данные ID_DIM_CLIENT
, которые дублируются в вашей существующей таблице, на которой вы пытаетесь создать ПК. PK не позволяет дублировать.
Покажите нам SQL, который вы используете для добавления первичного ключа. У вашего оператора CREATE TABLE нет его. –
Существует дубликат данных для любых столбцов (ов), которые вы пытаетесь создать первичный ключ. Что вы ожидали? – sstan