Раз идет речь о копировании файла БД, то предположу что это SQLite
Даже не знаю, что натолкнуло вас на таку мысль…
Может быть название темы?
по своему опыту могу сказать что для многопользовательского режима она почти не предназначена
Большую часть времени клиент будет 1. Во время редактирования - 2, причём один только читает. SQLite вполне с этим справится.
Данные можно проверять и на стороне клиента
Можно, более того они будут там проверяться, но всегда есть шанс, что что-то неодинаково проверишь в программе и триггерах, а в итоге все (потенциально долгие изменения) из-за этого не закомитятся, что ни есть хорошо.
в любом случае можно сделать Transaction.Start, а при не нужности изменений Rollback
Транзакция делается на каждом этапе редактирования. Единую транзакцию делать на все изменения не вариант, так как если у нас при редактировании не удалось 15-ое изменение, это значит, что должно откатиться оно, а не все 15 с самого начала процесса редактирования.
Логически редактирование представляется так:
SQL
Transaction.Begin
SubTransaction1.Begin
Change1
SubTransaction1.Commit
SubTransaction2.Begin
Change2
SubTransaction2.Commit
SubTransaction3.Begin
Change3
SubTransaction3.Commit
…
SubTransactionN.Begin
ChangeN
SubTransactionN.Commit
Transaction.Commit
Но вложенные транзакции поддерживают далеко не все БД.