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

Привет. Имеется массив массивов вида $arr = [ ['id'=>1,'age'=>12] ,

['id'=>1,'age'=>32] ....n ]

Есть ли возможность средствами ORM ларки обновить пачку данных в таблице ?

Хотел использовать метод upsert , но ругается на то, что мол не все поля с данными присылаю, а только часть.

18 ответов

53 просмотра

заверни в транзакцию и в цикле запусти обновление по-строчно, что ты хочешь выиграть отправив это все одним запросом, на стороне базы данных в итоге будет тот же цикл с теме же проверками на существование, а может быть и того хуже попытки вставки получение ошибки и т.д.

Egor Gruzdev
заверни в транзакцию и в цикле запусти обновление ...

upsert делает INSERT INTO table (...) VALUES (...), (...), (...) ON DUPLICATE KEY UPDATE (...) и это гораздо лучше циклов и т.п.. пусть даже и в транзакции

Egor Gruzdev
о каких объемах идет речь?

а что объемы вещь постоянная ? сегодня у него 10 строк .. а завтра в сотни раз больше

Иван-Марков Автор вопроса
Egor Gruzdev
о каких объемах идет речь?

100 строк примерно за раз (но часто)

Иван Марков
100 строк примерно за раз (но часто)

часто это как 60 раз в секунду или 1 раз в сутки

ну так проблема в том что при интсерте в таблицу не хватает данных , так как недостающие поля не имеют дефолтных настроек ... Вы либо передавайте их либо в таблице пропишите

Иван-Марков Автор вопроса
Egor Gruzdev
часто это как 60 раз в секунду или 1 раз в сутки

тут все зависит от нагрузки, пока не могу точно сказать, но надо много и часто в минуту будет обновлять таблицу.

Иван-Марков Автор вопроса
Vitaly Larin
ну так проблема в том что при интсерте в таблицу н...

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

Vitaly Larin
upsert делает INSERT INTO table (...) VALUES (...)...

мое мнение, что upsert больше минусов, чем плюсов

Иван-Марков Автор вопроса

да. это просто костыль для метода upsert получится

Иван Марков
да. это просто костыль для метода upsert получится

измените таблицу и костыль не понадобиться

Иван Марков
ну или запрос )

Вы превратите 1 простое действие в цепочку последовательных действий

- если хоть с одной записью проблема, вся работа по бороде (в случае цикла можно пропустить и повторить работы с ошибочными записями) - улетающий в бесконечность целочисленный autoincrement - отлов где произошла ошибка, также сложно, т.е. что из 1000 строк sql вызвало проблему это то что по опыту вспомнилось а по скорости, в частности 90% когда база данных на том же сервере где и приложение особо выигрыша я не замечал а вот удобство поддержки построчной вставки/обновления, понимание что происходит, возможность задать значения по умолчанию в приложении, а не надеяться на базу данных, значительно превосходит выигрыш в доли секунд

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

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

Всем привет! Имеется функция: function IsValidChar(ch: UTF8Char): Boolean; var i: Integer; ValidChars: AnsiString; begin ValidChars := 'abcdefghijklmnopqrstuvwxyzABCDE...
Евгений
44
И никого не интересует какие пакеты кто использует. ((% Заходишь на сайт симфони и видишь поддержку Украины - по законам РФ это ж экстремизм. Только никто не отказывается от с...
Am Ambrion
11
лучше скажите, причём тут паскаль?
Alexey Kulakov
36
Чтобы перехватить все нажимания буков на форме, надо хук ставить? Пробовал на форме ОнКейДаун, оно ловит клаву если фокус не на компоненте с вводом текста
Serjone
15
Народ! Впервые клиенту пришло письмо от РКН, у вас, дескать, есть яндекс метрика, а нигде не написано, что вы ее юзаете. Никто не сталкивался?
Sasha Beep
14
Всем привет! вывожу на общей стр дочерние ресурсыв каждом ресурсе галерея, и первая фотка должна выводиться на общей [!DocLister? &prepare=photo !]
Alekso
12
А можно вопрос? Мне сегодня сказали что у меня функция (которая просто заполняет массив значениями) не правильная void Full(double * arr, int n) { for (int i = 0; i < n; i...
† C E †
7
День добрый, подскажите пожалуйста, есть ли какой-то способ сказать ребару не компилировать определённое приложение? Всю доку их перечиатл ничего подобного не нашёл
Кирилл
14
Добрый вечер. Хочу чтобы у меня в классе поле было функцией, которая возвращает строку. Делаю так: interface ... TGetOutPath = function : String of object; ... protec...
Kirill Filippenok
12
Всем привет. Возможно ли выполнить код ahk без интерпритатора? Имея только скомпилированный ехе файл? Например как функция eval
proxy
6
Карта сайта