sqlite.h


ATTACH DATABASE

Sintaxis ATTACH DATABASE
ATTACH DATABASE

La sentencia ATTACH DATABASE añade otro fichero de base de datos a la conexión de base de datos actual. Los nombres de base de datos 'main' y 'temp' se refieren a la base de datos principal y a la base de datos usada para tablas temporales. Las bases de datos principal y temporal no pueden ser añadidas ni separadas.

Las tablas en la base de datos añadida pueden ser referenciadas usando la sintaxis nombre-base-datos.nombre-tabla. Si el nombre de la tabla es único a lo largo de todas las bases de datos añadidas y de las bases de datos principal y temporal, el prefijo nombre-base-datos no es necesario. Si dos o más tablas en bases de datos diferentes tienen el mismo nombre y no se usa el prefijo de base de datos en una referencia de tabla, la tabla elegida es la que esté en la base de datos añadida más recientemente.

Las transacciones que involucren múltiples bases de datos son atómicas, asumiendo que la base de datos principal no es ":memory:" y el el modo de registro (journal_mode) no es WAL. Si la base de datos principal es ":memory:" o si journal_mode es WAL, entonces las transacciones continúan siendo atómicas dentro de cada fichero de base de datos individual. Pero si el equipo host se cuelga en medio de un COMMIT donde dos o más ficheros de base de datos se están actualizando, algunos de esos ficheros pueden haber hecho los cambios y otros no.

Existe un límite, que se establece usando sqlite3_limit() y SQLITE_LIMIT_ATTACHED, al número de bases de datos que pueden estar conectadas simultáneamente a una consexión de base de datos.