169 похожих чатов

Есть код, который должен поменять строку по уникальному ключу, если

она есть, либо вставить новую с какими-то значениями по умолчанию, если ее еще нет. удалений нет и не будет, конкуренция - теоретически возможно.

какие там последние достижения разработческой мысли на этот счет? merge всё так же не атомарен? писать по старинке insert/except dup_val_on_index/update? заранее наполнять таблицу пакетно, чтобы потом работал только update?

18 ответов

9 просмотров

Частота операций какая и объемы данных? Это к тому надо ли заполнять все заранее

Kirill-Leontev Автор вопроса
キリル kirigami
Частота операций какая и объемы данных? Это к тому...

пока всё смешное. со временем вырастет в несколько раз, но всё еще будет смешное. в принципе, insert/dup_val_on_index/update логически полностью устраивает, просто думаю, придумали ли что лучше.

В смысле не атомарен? У него, конечно, есть некоторые проблемы, например, с триггерами, но он всегда был атомарен.

xtender
В смысле не атомарен? У него, конечно, есть некото...

А расскажите какие там с триггерами проблемы

キリル kirigami
А расскажите какие там с триггерами проблемы

Двойной вызов строчных на insert/update/delete

Kirill-Leontev Автор вопроса
xtender
В смысле не атомарен? У него, конечно, есть некото...

ок. неверно выразился. в том смысле, что либо выполняется целиком, либо не выполняется целиком - конечно он атомарен.

Kirill Leontev
ок. неверно выразился. в том смысле, что либо выпо...

В чем именно претензия к мерджу? Разве, не любой DML так себя ведёт - выполняется только целиком?

Kirill-Leontev Автор вопроса
Alexei Onin
В чем именно претензия к мерджу? Разве, не любой D...

любой. про атомарность, повторюсь, я сказал глупость. вероятно в том что он не увидит вставки из конкурентной сессии и отвалится с ora-1. дома напишу тест, проверю.

Спасибо! Будет интересно

Kirill-Leontev Автор вопроса
Alexei Onin
Спасибо! Будет интересно

да ничего там интересного скорее всего не будет. два одинаковых merge в разных сессиях в пустую таблицу. первый вставит, второй повиснет на блокировке. если первый зафиксирует, то второй отвалится с ора-1. наверное.

ZhekaPPP
не, ORA-1 выходит

insert ведёт себя точно также. Я так и не понял в чём была претензия к merge и почему вместо него надо писать insert/update

Alexei Onin
insert ведёт себя точно также. Я так и не понял в ...

претензия, видимо, в том, что это не очевидно, что merge может выдать такую ошибку :)

Alexei Onin
insert ведёт себя точно также. Я так и не понял в ...

insert /*+ ignore_row_on_dupkey_index()*/ into вставит недублирующие записи merge упадёт если есть хотя бы один дубль

Anton
insert /*+ ignore_row_on_dupkey_index()*/ into вст...

а с таким хитрым хинтом ошибок не будет и оно просто их проигнорит?

ZhekaPPP
не, ORA-1 выходит

А, да, туплю - логично же с точки зрения acid так и должно быть: на момент старта стейтмента строки не существует, поэтому идёт вставка, а не апдейт

Kirill-Leontev Автор вопроса
Alexei Onin
insert ведёт себя точно также. Я так и не понял в ...

в том что merge в описанном примере выбрасывает ора-1, а не выполняет апдейт. что, если задуматься о том, как работать мердж, логично и ожидаемо, но мне от этого не легче 🤣 ну и вообще он, вероятно, не был предназначен для построчных апсертов

Похожие вопросы

Обсуждают сегодня

Anyone here suffers from unexplained aural migraines, who would be up for talking for a bit? Doesn't *have* to be aural, but I am not asking about headaches, I mean actual mi...
Martin Rys
55
Вопрос по WIN32: Насколько я понимаю то все функции win32 привязаны к объектам операционной системы. Например консоль, файл, кисть, окна итд. Следовательно функции win32 упра...
Tommy Vercetti
6
Hello, can I install macOS and run flutter on a virtual machine? Is it possible to print for iphone?
Mazones
11
кто-то пользуется компонентами rx ? как их лучше ставить, через OPM? (lazarus)
Iluha Companets
15
В смысле более затратная? Общая стоимость владения лошадью меньше, чем автомобиля. В среднем.
Sergej R
10
подскажите пожалуйста, как мне освободить результат записанный в переменную result? в чем проблема подскажите если МОЖЕТЕ?
Михаил Helper
28
есть тут кто-то , кто только начал изучать си? если проходите курс на степике или как-то сами изучаете, пишите, может, скооперируемся?..
Eule
25
я не магистр хаскеля, но разве не может лейзи тип конвертнуться в не-лейзи запросив вычисление содержимого прям при инициализации?
deadgnom32 λ madao
100
Слушайте, ещё такая интересная задачка. Сделан аудит действий пользователей через триггеры в базе, соответственно каждый пользователь имеет свой логин и пароль в базе. Это пре...
Сергей Бычков
12
Скажите, тут нет проблемы? IMyInterface1 = interface function GetInterface2: IInterface2; ... function TMyInterface.GetInterface2: IInterface2; begin Result := TI...
Ruslan aka DUDE
18
Карта сайта