Я пытаюсь обновить строку таблицы, но я не могу заранее знать, какое поле будет обновлено.
Сначала я думал, что просто запрашиваю существующую строку, а затем сравниваю старые значения против новых значений и обновлять только те, которые отличаются, но даже если это очень маловероятно в моем случае использования, если кто-то должен обновить данные в середине моего обновления (при сохранении результата моего запроса -compare- в память / оперативная память), я бы перезаписал все изменения, сделанные после обновления. другие запросы или в конечном итоге с тем же результатом.
Каков правильный способ (если он есть) обновлять только поле, которое я хочу, при передаче всего «обновленного» объекта. Я мог бы подготовить столько комбинаций запросов, сколько их столбец, и решить во время выполнения, какой запрос использовать, но это кажется настолько беспорядочным и нереалистичным c, что я уверен, что есть другой способ сделать это.
Отредактируйте с примером проблемы, которую я пытаюсь избежать:
исходные данные: c1 = foo c2 = bar
Серверная часть делает запрос и извлекает строку поэтому будет удерживаться в оперативной памяти c1 = foo c2 = bar
в то же самое время, когда другой пользователь сделает то же самое и будет удерживать c1 = foo c2 = bar
пользователь 1 хочет обновить c2 до " hello "
пользователь 2 хочет обновить c1 до" привет "
Запрос обновления пользователя 1 будет UPDATE table SET c1="foo" ,c2="hello"
Запрос обновления пользователя 2 iwll будет UPDATE table SET c1="hi" ,c2="bar"
Пользователь, для которого запрос отправлен первым, будет заменен другим пользователем.