Estoy tratando de comprender las implicaciones de utilizar ATTACH con bases de datos con permisos de lectura y escritura diferentes.sqlite3: base de datos principal de solo lectura y ATTACH
Tengo una situación en la que necesito acceder a una gran base de datos (aproximadamente 512MB) que reside en un sistema de archivos de solo lectura. También hay una pequeña base de datos de lectura y escritura con el mismo esquema que reside en un sistema de archivos de lectura y escritura. La base de datos de solo lectura proporciona los datos base utilizados en mi escenario, con actualizaciones de datos poco frecuentes almacenadas en la base de datos de lectura y escritura.
Actualmente abro estas dos bases de datos en conexiones separadas y el código que mantiene las conexiones es responsable de presentar una vista unificada de los datos a sus clientes. Por ejemplo, esto significa que el código tiene que fusionar los resultados de las consultas de las bases de datos de solo lectura y lectura-escritura, etc. Me doy cuenta de que esta configuración es poco elegante (y probablemente no sea óptima) y he estado buscando utilizar el comando ATTACH para crear un vista unificada de los datos en SQL en lugar de C++.
Me pregunto si hay algún problema en particular relacionado con adjuntar bases de datos de solo lectura y lectura y escritura de las que deba tener conocimiento. Estoy viendo uno de los siguientes escenarios de ATTACH:
- Abra la base de datos de solo lectura como principal y ADJUNTE la base de datos de lectura y escritura. Esta es mi solución preferida.
- Abra la base de datos de lectura y escritura como principal y FIJE la base de datos de solo lectura.
- ¿Una tercera alternativa?
Algunas consultas de Google apuntan a mensajes que sugieren problemas en el escenario (1). Debido a que no encontré una respuesta definitiva y porque mi propia prueba con sqlite 3.6.13 no reveló ningún problema, estoy publicando esta pregunta.
Gracias por cualquier idea.
Esto no funciona si la base de datos principal se abre con el indicador 'SQLITE_OPEN_READONLY'. – ybungalobill