powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Задачка с одним неизвестным
6 сообщений из 6, страница 1 из 1
Задачка с одним неизвестным
    #39698926
MaXie
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Доброго всем дня.

Есть таблица:
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
CREATE TABLE TBL_MD5
(
  CODE      VARCHAR2(25)    NOT NULL,
  MD5       RAW(16)         NOT NULL,
  VAL       VARCHAR2(250), 
  PRIMARY KEY (CODE, MD5) ENABLE VALIDATE
)
ORGANIZATION INDEX;


И есть попытка изменить в этой таблице данные:
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
DECLARE
    TYPE t_md5      IS TABLE OF TBL_MD5%ROWTYPE;
       
    arr_MD5   t_md5 := t_md5();
BEGIN
    FORALL i IN 1..arr_MD5.COUNT
        MERGE INTO TBL_MD5 DST
        USING (
            SELECT
                arr_MD5(i).CODE     AS CODE,
                arr_MD5(i).MD5      AS MD5,
                p_ext_file          AS VAL                        
            FROM DUAL
        ) SRC
        ON (
            DST.CODE = SRC.CODE
        )
        WHEN MATCHED THEN UPDATE
        SET
            MD5 = SRC.MD5,
            VAL = SRC.VAL
        WHEN NOT MATCHED THEN INSERT
        VALUES(
            SRC.CODE,
            SRC.MD5,
            SRC.VAL
        );
END;    


Вопрос: что должен содержать массив arr_MD5 , чтобы вызвать ошибку " ORA-00001: unique constraint (...) violated " ?

Спасибо.
...
Рейтинг: 0 / 0
Задачка с одним неизвестным
    #39698939
Фотография Щукина Анна
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MaXie,

Код: plsql
1.
2.
3.
4.
select CODE, count(1) as cnt
  from TBL_MD5
 group by CODE
having count(1) > 1
...
Рейтинг: 0 / 0
Задачка с одним неизвестным
    #39698945
MaXie
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Щукина Анна,

благодарю за отклик.
Такие записи есть и в рамках данной IOT-таблицы это допустимо. Вопрос, как возможно на указанном MERGE получить ошибку ограничения целостности по PK ключу?

Почему спрашиваю? Ночью в логе было получено сообщение об ошибке. Данные, которые служили источником для массива arr_MD5 , с того момента претерпели неоднократные изменения.
...
Рейтинг: 0 / 0
Задачка с одним неизвестным
    #39698948
MaXie
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Щукина Анна,

Дошло! Спасибо! )
...
Рейтинг: 0 / 0
Задачка с одним неизвестным
    #39698949
Фотография Щукина Анна
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MaXie,

у вас первичный ключ - составной, по двум полям. при наличии дублей по CODE - требуется обеспечить уникальность по MD5.
теперь подумайте о том, что произойдет, когда в ваш MERGE попадет запись с CODE - из списка дубликатов...
...
Рейтинг: 0 / 0
Задачка с одним неизвестным
    #39698951
Фотография Щукина Анна
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MaXieЩукина Анна,

Дошло! Спасибо! )опередили "на кнопке"... :)
...
Рейтинг: 0 / 0
6 сообщений из 6, страница 1 из 1
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Задачка с одним неизвестным
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]