powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Непонятка с merge
12 сообщений из 12, страница 1 из 1
Непонятка с merge
    #39748805
slay2012
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Есть таблица:
Код: sql
1.
2.
3.
4.
5.
6.
CREATE TABLE TEST_MERGE_PT (
    LIST_ID  INTEGER NOT NULL,
    TYPE_ID  INTEGER DEFAULT 0 NOT NULL,
    OBJ_ID   INTEGER NOT NULL
);
ALTER TABLE TEST_MERGE_PT ADD CONSTRAINT PKTEST_MERGE_PT PRIMARY KEY (LIST_ID, TYPE_ID, OBJ_ID);



Пробуем такой запрос:
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
    merge into test_merge_pt d
    using (
        select
            3 as lid,
            1 as id,
            0 as tid
        from rdb$database
        union all
        select
            3 as lid,
            1 as id,
            0
        from rdb$database
    ) s
    on d.list_id = s.lid and d.obj_id = s.id and d.type_id = s.tid
    when not matched then
        insert (list_id, obj_id, type_id)
        values (s.lid, s.id, s.tid);


И получаем:
Код: plaintext
1.
2.
3.
Invalid insert or update value(s): object columns are constrained - no 2 table rows can have duplicate column values.
violation of PRIMARY or UNIQUE KEY constraint "PKTEST_MERGE_PT" on table "TEST_MERGE_PT".
Problematic key value is ("LIST_ID" = 3, "TYPE_ID" = 0, "OBJ_ID" = 1).
Разве merge не должен пропустить дубликаты?

Сервер
Код: plaintext
1.
2.
3.
Server Version: LI-V3.0.4.33047 Firebird 3.0
Server Implementation: Firebird/Linux/AMD/Intel/x64
Service Version: 2
...
Рейтинг: 0 / 0
Непонятка с merge
    #39748808
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
slay2012,

в трёшке так и должно быть. Курсор не видит свои изменения
...
Рейтинг: 0 / 0
Непонятка с merge
    #39748829
slay2012
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Симонов Денис,

Т.е. это фича? Как-то не логично, но ладно - надо не забывать и фильтровать самостоятельно
...
Рейтинг: 0 / 0
Непонятка с merge
    #39748833
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
slay2012,

наоборот логично. В using запрос не должен содержать дубликатов.
По стандарту он ещё должен и в update ругаться когда повторное обновление идёт, но не ругаецо
...
Рейтинг: 0 / 0
Непонятка с merge
    #39748837
slay2012
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Симонов Денис,

Может стоит в документации об этом упомянуть?
...
Рейтинг: 0 / 0
Непонятка с merge
    #39748843
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
slay2012,

я обычно делаю особое примечание когда поведение не соответствует стандарту. Здесь всё по стандарту.

З.Ы. В 2.5 есть примечание про проблему стабильности курсора.
...
Рейтинг: 0 / 0
Непонятка с merge
    #39748917
WildSery
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Симонов Денис,

Может, он имел в виду, что надо описать, почему в update промолчал.
...
Рейтинг: 0 / 0
Непонятка с merge
    #39748923
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
WildSery,

про апдейт там есть
...
Рейтинг: 0 / 0
Непонятка с merge
    #39748947
Мимопроходящий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
17.12.2018 11:49, Симонов Денис пишет:
> я обычно делаю особое примечание когда поведение не соответствует стандарту. Здесь всё по стандарту.

народ не читает стандарты.
не имеет физической возможности (С).

а более расширенная информация лишней не бывает.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Непонятка с merge
    #39748953
WildSery
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Мимопроходящий,

Если в документации описываются особенности, то всё, что в документации не описано - это стандарт и так и должно быть
...
Рейтинг: 0 / 0
Непонятка с merge
    #39748964
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вы на полном серьёзе считаете что нужно разжёвывать почему в using запрос при наличии дубликата по первичному ключу даёт ошибку?

Что там не очевидно?
...
Рейтинг: 0 / 0
Непонятка с merge
    #39748968
Мимопроходящий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
17.12.2018 14:27, Симонов Денис пишет:
> вы на полном серьёзе считаете что нужно разжёвывать почему в using запрос при наличии дубликата по первичному ключу даёт ошибку?

не нужно снобизма.
чайников нужно любить.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
12 сообщений из 12, страница 1 из 1
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Непонятка с merge
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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