Информация об изменениях

Сообщение Re[4]: Проверка актуальности Entity перед записью от 28.09.2023 7:49

Изменено 28.09.2023 7:51 zelenprog

Re[4]: Проверка актуальности Entity перед записью
Б>Да, перечитывать запись придется. Но сравнение можно упростить — вычислять и сравнивать хэш от строки таблицы. Хранить хэши не нужно.
Б>Когда клиент читает данные: вычисляем хэш от строчки в БД и передаем его клиенту.

Б>Когда клиент записывает данные: клиент передает изменения строчки, а также передает имеющийся у него хэш.

Б>Снова вычисляем хэш от имеющейся строчки в БД, и сравниваем с клиентским.
Б>Если хэши совпали, то данные можно записывать. Если не совпали, значит кем-то были изменены.

Понятно, спасибо!

А что надо сделать после того как в базу записаны новые данные?
В этот момент у нас есть две записи для этого товара:
— первая запись в "исходной" таблице, которая содержит старые значения реквизитов и хэш
— вторая запись в отредактированной пользователем "пользовательской" таблице на форме, значения реквизитов из этой таблицы (измененные пользователем) были записаны в базу

Ясно, что мы должны обновить запись и в "исходной" таблице.
Как это правильно сделать?

Варианта два:
1) Записать новые реквизиты из записи "пользовательской" таблицы в запись "исходной" таблицы
или
2) Перечитать из базы данные о товаре в "исходную" таблицу. А также в "пользовательскую" таблицу.
Вроде как этот вариант надежнее. Однако, он менее производительный, более трудоемкий.

Как лучше сделать?
Как это обычно делается на практике в реальных хороших программах?
Re[4]: Проверка актуальности Entity перед записью
Б>Да, перечитывать запись придется. Но сравнение можно упростить — вычислять и сравнивать хэш от строки таблицы. Хранить хэши не нужно.
Б>Когда клиент читает данные: вычисляем хэш от строчки в БД и передаем его клиенту.

Б>Когда клиент записывает данные: клиент передает изменения строчки, а также передает имеющийся у него хэш.

Б>Снова вычисляем хэш от имеющейся строчки в БД, и сравниваем с клиентским.
Б>Если хэши совпали, то данные можно записывать. Если не совпали, значит кем-то были изменены.

Понятно, спасибо!

А что надо сделать после того как в базу записаны новые данные?
В этот момент у нас есть две записи для этого товара:
— первая запись в "исходной" таблице, которая содержит старые значения реквизитов и хэш
— вторая запись в отредактированной пользователем "пользовательской" таблице на форме, значения реквизитов из этой таблицы (измененные пользователем) были записаны в базу

Ясно, что мы должны обновить запись и в "исходной" таблице.
Как это правильно сделать?

Варианта два:
1) Записать новые реквизиты из записи "пользовательской" таблицы в запись "исходной" таблицы
или
2) Перечитать из БД данные о товаре в "исходную" таблицу. А также в "пользовательскую" таблицу.
Вроде как этот вариант надежнее. Однако, он менее производительный, более трудоемкий.

Как лучше сделать?
Как это обычно делается на практике в реальных хороших программах?