Sqlite3 рекомендует использовать API резервного копирования для создания резервной копии, но также указывает, что копирование может быть безопасным, если нет выполняемых транзакций:
Лучший подход к созданию надежных резервных копий базы данных SQLite - использовать API резервного копирования, который является частью библиотеки SQLite. В противном случае можно безопасно сделать копию файла базы данных SQLite, если ни один процесс не выполняет транзакции.
Я бы хотел использовать метод копирования файла базы данных, при условии, что я могу сделать это безопасно.
NB. Я понимаю, что API резервного копирования является предпочтительным вариантом, но поскольку Sqlite3 рекламирует атомарные коммиты, я считаю, что этот подход жизнеспособен, и мне интересно узнать, как сделать этот подход максимально безопасным.
Какую команду или API SQL можно использовать для полной блокировки базы данных, которая удовлетворяла бы требованию «пока нет транзакций в процессе»?
Можно ли использовать для этого пустую эксклюзивную транзакцию (т. Е. BEGIN EXCLUSIVE;
без дальнейших утверждений), несмотря на то, что технически это транзакция?