Что лучше UPDATE или DELETE+INSERT

148
28 февраля 2021, 02:40

Заметил в одном CMS такую вещь. При необходимости обновлении каких либо записей они делают сначала DELETE потом INSERT новой измененной записи, вместо UPDATE. Это разве лучше? На сколько хороша эта практика и зачем? Например я замечал там даже такое: поля пользователей это отдельные записи в таблице (пол, дата рождения и тд) И если пользователь поменял пол, то удаляются все поля, а потом INSERTтся по новой вместе с обновленным полом. CMS комерческая, вроде адекватный код, в отличие от многих, но вот это мне покоя не даёт

Answer 1

Если речь идёт о представлении полей отдельными строками, то предположу, что набор полей динамический. Например, пользователь может сам добавлять или удалять поля о себе.

Теперь он что-то поудалял и сохраняет. Как сделать update? Если мы хотим полностью снести удалённые строки, а не записывать в них null (например, чтобы потом искать, у каких пользователей есть такие свойства, или нам просто надо отличать пустую строку от null), то мы должны удалённые строки удалить, изменённые строки обновить, а остальные - не трогать. Это сложно. Гораздо проще всё снести и записать заново.

Да, это довольно распространённая практика при редактировании отношений многие-ко-многим. Не знаю, работает ли это быстрее, но так получается гораздо более простой код.

Answer 2

Более или менее точно ответить можно только при наличии конкретных примеров запросов.
А вообще это плохая практика(притом я о такой практике слышу впервые), за исключением каких-то специфических случаев сделать UPDATE куда эффективнее DELETE + INSERT

READ ALSO
Как отобразить 404 и доработать роутер?

Как отобразить 404 и доработать роутер?

Делаю роутер с последующей иньекций роутов из бд, и вкурить никак не могу, как мне заставить работать страницу ошибки? Допустим 404Надо, site

134
Регулярное выражение для цен

Регулярное выражение для цен

Как создать подходящее регулярное выражение? Есть такие строки:

109