2012-09-23 4 views
0

Dans mon application, j'ai utilisé ATTACH DATABASE pour "fusionner" 2 bases de données et travailler dessus. Cela fonctionne parfaitement. Aucun problème pour SELECT/UPDATE/INSERT sur les tables des 2 fichiers de base de données.SQLite + ATTACH Database + CREATE TABLE

Ma question: Comment spécifier quel fichier de base de données utiliser quand je veux faire un CREATE TABLE?

CREATE TABLE caps (
    id VARCHAR PRIMARY KEY NOT NULL, 
    name_en VARCHAR, 
    status INTEGER DEFAULT (1)) 

EDIT: Je joint mon deuxième base de données comme:

self.database = [FMDatabase databaseWithPath:DATABASE_READ_SANDBOX_PATH]; 
[self.database executeUpdate:[NSString 
    stringWithFormat:@"ATTACH DATABASE '%@' AS db2", 
    DATABASE_USER_SANDBOX_PATH]]; 

Ainsi, la seconde base de données a un nom (db2), mais le premier? Et je veux ajouter le tableau dans le premier.

+0

Quel type d'application ?? Android?? –

+0

C'est pour une application iOS;) J'ai ajouté la ligne d'attachement dans mon message initial. –

Répondre

2

Le documentation dit:

tables dans une base de données ci-joint peuvent être appelés à utiliser la base de données nom- syntaxe .
Les noms de base de données 'main' et 'temp' font référence à la base de données principale et à la base de données utilisée pour les tables temporaires.

Ainsi:

CREATE TABLE main.caps(...) 
CREATE TABLE db2.caps(...) 
+0

Oui, mais j'ai besoin de créer la table en db1. Mais je ne nomme jamais la première base de données "db1" dans mon code. Comment faire ça ? La base de données par défaut utilisée est-elle db1 si nous ne la spécifions pas? –

+0

@muqaddar: Oui; 'main' est le nom _in SQL_ de la base de données sur laquelle vous avez ouvert la connexion principale. –

+0

Merci à vous Donal! –