Не работает? - PullRequest
       12

Не работает?

0 голосов
/ 15 февраля 2012

Мне нужно вставить какое-то поле в таблицу.Таблица:

    CREATE TABLE RADAR(
    ctfoto  VARCHAR2(5),
    pkradar NUMBER(3,0),
    sradar  VARCHAR2(3),
    limitvelctera   NUMBER(3,0),
    limitvelradar NUMBER(3,0),  
    CONSTRAINT radar_pk PRIMARY KEY(ctfoto, pkradar, sradar)
);

Операция вставки:

INSERT INTO RADAR(ctfoto, pkradar, sradar, limitvelctera, limitvelradar)
SELECT distinct carretera_foto, pto_km_radar, sentido_radar, limit_vel_ctera, limit_vel_radar FROM gotcha 

Ошибка:

ORA-00001: unique constraint (USER4704.RADAR_PK) violated

Пожалуйста, помогите.

Ответы [ 2 ]

3 голосов
/ 15 февраля 2012

DISTINCT применяется ко всему набору столбцов, которые вы выбираете.

По всей вероятности, в GOTCHA есть строки, которые имеют одинаковые значения carretera_foto, pto_km_radar и sentido_radar, но разные значения для одного или обоих из двух других столбцов (limit_vel_cteraи limit_vel_radar).DISTINCT в вашем SELECT не может удалить ни одну из строк, поскольку хотя бы одно значение отличается, но ограничение первичного ключа в таблице RADAR отклоняет строки, в которых первые три столбца идентичны.

3 голосов
/ 15 февраля 2012

Возможно, у вас есть более одной записи в gotcha с одинаковыми значениями в полях carretera_foto, pto_km_radar, sentido_radar.

DISTINCT означает, что вся запись не будет повторяться.

...