powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Найти и обновить VS. удалить и добавить?
5 сообщений из 5, страница 1 из 1
Найти и обновить VS. удалить и добавить?
    #39920963
GlooBus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Приветствую...

Добрые люди, подскажите как правильней поступить?
Бывает частенько я тяну какие то данные из разных мест и гружу их в таблицу. Пользуюсь методом "удалить и вставить заново", тобишь получив строку, в которой как правило есть первичный ключ (ID), делаю у себя delete по нему и следом insert полученной строки. Вроде просто и быстро.
А верно ли так поступать?
Может нужно по ключу (ID) попытаться найти запись, если её нет, то уже делать insert, а если запись есть - update.
Или же вообще, если по ключу запись в таблице есть, сверять все поля на предмет расхождения и обновлять только в случае, если строки различаются...
...
Рейтинг: 0 / 0
Найти и обновить VS. удалить и добавить?
    #39920973
Фотография Elic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
RTFM merge
...
Рейтинг: 0 / 0
Найти и обновить VS. удалить и добавить?
    #39920979
GlooBus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Elic,

Дело в том, что все выполняется на php с использованием Query Builder, там нет метода для использования merge, изобретать свой тоже не хочется, по этому в принципе и использую:
Код: php
1.
2.
$this->db->delete('TABLE', ['id' => $data->id]);
$this->db->insert('TABLE', $data);



В случае, когда нужно проверить наличие строки с ключом, а далее в зависимости от результата обновить или добавить, выходит примерно подобное:
Код: php
1.
2.
3.
4.
5.
$query = $this->db->select('col1, col2, col3 ...')->where('id', $data->id)->get('TABLE');
if ($query->row())
  $this->db->update('TABLE', ['id' => $data->id], $data);
else
  $this->db->insert('TABLE', $data);



Какой из методов будет быстрее загружать данные в таблицу мне не принципиальна, больше интересует как это может потом повлиять на выборку этих самых данных? Удаление->вставка не навредит ли индексам, статистике и т.п.?
...
Рейтинг: 0 / 0
Найти и обновить VS. удалить и добавить?
    #39920987
проходил мимо...
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
GlooBus,

кажется, сегодня действительно плохой день...
а результаты вашего инсёрта и апдейта в пхп можно как-то получит? например, количество строк, которые апдейт проапдейтил?
...
Рейтинг: 0 / 0
Найти и обновить VS. удалить и добавить?
    #39920997
Фотография -2-
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
GlooBus
не навредит ли
Тем, кто пользуется прикладными абстракциями, не стоит переживать за "навредит". Это все равно, что интересоваться миллиграммом спирта в выписанном лекарстве, но запивать его стаканом водки.
...
Рейтинг: 0 / 0
5 сообщений из 5, страница 1 из 1
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Найти и обновить VS. удалить и добавить?
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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