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

Есть те, кто юзает горм (не по своей воле  :D)

почему метод Save всегда вызывает инсерт? В доке вижу, что должен быть update, если primary key присутсвует, в ином случае инсерт, но по какой-то причине в логах всегда вижу только insert, даже если праймари кей в модели присутсвует. Не сталкивался никто с таким?

13 ответов

20 просмотров

upsert, он же INSERT ... ON CONFLICT UPDATE

Pavel- Автор вопроса
Dmitry M
upsert, он же INSERT ... ON CONFLICT UPDATE

ага, всегда апсерт, если конкретнее, но в доке вижу, что должно быть "Save is a combination function. If save value does not contain primary key, it will execute Create, otherwise it will execute Update (with all fields).",  хотя в логах вообще не вижу апдейты

Pavel
ага, всегда апсерт, если конкретнее, но в доке виж...

Если СУБД поддерживает upsert, то зачем делать несколько запросов?

Pavel- Автор вопроса
Dmitry M
Если СУБД поддерживает upsert, то зачем делать нес...

А почему несколько запросов? Тут либо апдейт либо инсерт (?), плюсом кое какие нюансы есть с некоторыми поведения апсертов

Pavel
А почему несколько запросов? Тут либо апдейт либо ...

Без механизма upsert будет два запроса: 1. insert; 2. если получили ошибку целостности, то update

Pavel- Автор вопроса
Dmitry M
Без механизма upsert будет два запроса: 1. insert;...

да вроде бы просто "предзапросная" проверка на наличие первичного ключа и оттуда уже выбор запроса(?)

Подай сигнал если тебя держат в плену

приведите пример

Pavel- Автор вопроса
Dmitry M
приведите пример

ну если во внутренности  Save метода залезть, то он проверяет, что первичное поле (т.е поле с тегом primaryKey) не нулевое и делает апдейт и только в противном случае инсерт/апсерт, но я в логах вижу, что даже при наличии первоичного ключа делает инсерт/апсер

А если первичное поле uuid/string, который генерится на стороное приложения?

Pavel- Автор вопроса
Dmitry M
А если первичное поле uuid/string, который генерит...

в моем случае оно всегда с gorm.Model, т.е интовое. Мб как-то с типом связано? Хз

Pavel
в моем случае оно всегда с gorm.Model, т.е интовое...

Если решать задачу в общем виде, то проверка на пустое/не пустое поле не очень работает

Pavel- Автор вопроса
Dmitry M
Если решать задачу в общем виде, то проверка на пу...

не, это горм так рулит на своем уровне, точнее должен, но чет апдейты никогда не происходят

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

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

а через ESC-код ?
Alexey Kulakov
29
30500 за редактор? )
Владимир
47
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
13
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
в JclConsole объявлено так: function CtrlHandler(CtrlType: DWORD): BOOL; stdcall; - где ваше объявление с stdcall? у вас на картинке нет stdcall
Karagy
8
Как передать управляющий символ в открытую через CreateProcess консоль? Собсна, есть процедура: procedure TRedirectThread.WriteData(Data: OEMString); var Written: Cardinal;...
Serjone
6
Ребят в СИ можно реализовать ООП?
Николай
33
program test; {$mode delphi} procedure proc(v: int32); overload; begin end; procedure proc(v: int64); overload; begin end; var x: uint64; begin proc(x); end. Уж не знаю...
notme
6
у вас два процесса. один посылает другому сигнал. у вас есть код обоих процессов? если всё не так - расскажите как оно на самом деле. а именно кто кому чего, есть-ли консоли,...
Karagy
6
Карта сайта