diff --git a/ecrire/req/sqlite_generique.php b/ecrire/req/sqlite_generique.php
index 8210f938c4df9873d1daa69c23b62d7b51734034..6dfec661fe636d94eff39ea0b203a63a0f41cef0 100644
--- a/ecrire/req/sqlite_generique.php
+++ b/ecrire/req/sqlite_generique.php
@@ -988,41 +988,19 @@ function _sqlite_remplacements_definitions_table($query){
  * ALTER TABLE table MODIFY column definition
  * 
  * (MODIFY transforme en CHANGE columnA columnA) par spip_sqlite_alter()
+ * 
+ * 1) creer une table B avec le nouveau format souhaite
+ * 2) copier la table d'origine A vers B
+ * 3) supprimer la table A
+ * 4) renommer la table B en A
+ * 
  */
-function _sqlite_traiter_alter_table($table, $ordre, $colonne_origine, $colonne_destination='', $def='', $serveur=''){
+function _sqlite_traiter_alter_table($table, $ordre, $colonne_origine, $colonne_destination='', $def_col_destination='', $serveur=''){
 	
-	// creer une table temporaire identique
 	$def_origine = sql_showtable($table, $serveur);
+	$table_tmp = $table . '_tmp';
 
-	if (!sql_create(
-			$table_tmp = $table.'_tmp', 
-			$def_origine['field'], 
-			$def_origine['key'], 
-			$autoinc=false, 
-			$temporary=true, 
-			$serveur)){
-				spip_log("SQLite : ALTER TABLE table $ordre column :"
-					.' La creation de la table temporaire a echouee','sqlite');
-				return false;
-	}
-	
-	// y copier tous les champs
-	// Aie Aie Aie, risque de timeout ?
-	if (!sql_query("INSERT INTO $table_tmp SELECT * FROM $table")){
-		spip_log("SQLite : ALTER TABLE table $ordre column :"
-				.' La copie de la table d\'origine a echouee','sqlite');
-		return false;					
-	} 
-	
-	// supprimer la table d'origine (gasp, gloups !)
-	if (!sql_query("DROP TABLE $table")){
-		// ouf, ca s'est mal passe ;)
-		spip_log('SQLite : ALTER TABLE table DROP column :'
-				.' La suppression de la table d\'origine a echouee','sqlite');
-		return false;						
-	}
-	
-	// recreer la table d'origine avec les modifications :
+	// 1) creer une table temporaire avec les modifications	
 	// - DROP : suppression de la colonne
 	// - CHANGE : modification de la colonne
 	// (foreach pour conserver l'ordre des champs)
@@ -1037,7 +1015,7 @@ function _sqlite_traiter_alter_table($table, $ordre, $colonne_origine, $colonne_
 		if ($c == $colonne_origine) {
 			// si pas DROP
 			if ($colonne_destination){
-				$fields[$colonne_destination] = $def;
+				$fields[$colonne_destination] = $def_col_destination;
 				$fields_correspondances[$colonne_destination] = $c;
 			}	
 		} else {
@@ -1057,39 +1035,44 @@ function _sqlite_traiter_alter_table($table, $ordre, $colonne_origine, $colonne_
 		}
 	}
 	
-	$def_destination = array('field'=>$fields, 'key'=>$keys);
 
 	if (!sql_create(
-			$table, 
-			$def_destination['field'], 
-			$def_destination['key'], 
+			$table_tmp, 
+			$fields, 
+			$keys, 
 			$autoinc=false,
 			$temporary=false, 
 			$serveur)){
 				spip_log("SQLite : ALTER TABLE table $ordre column :"
-					.' La creation de la table nouvelle table a echouee','sqlite');
+					.' La creation de la table temporaire a echouee','sqlite');
 				// si on arrive la, on est plutot mal barre !
 				return false;
 	}
 	
-
-	// y copier les champs qui vont bien
+	// 2) y copier les champs qui vont bien
 	$champs_dest = join(', ', array_keys($fields_correspondances));
 	$champs_ori = join(', ', $fields_correspondances);
-	if (!sql_query("INSERT INTO $table ($champs_dest) SELECT $champs_ori FROM $table_tmp")){
+	if (!sql_query("INSERT INTO $table_tmp ($champs_dest) SELECT $champs_ori FROM $table")){
 		spip_log("SQLite : ALTER TABLE table $ordre column :"
-				.' La copie de la table temporaire vers la nouvelle table a echouee','sqlite');
+				.' La copie de la table d\'origine vers la table temporaire a echouee','sqlite');
 		return false;						
 	}
-
-
-	// supprimer la table temporaire 
-	if (!sql_query("DROP TABLE $table_tmp")){
+	
+	
+	// 3) supprimer la table d'origine
+	if (!sql_query("DROP TABLE $table")){
 		spip_log("SQLite : ALTER TABLE table $ordre column :"
-				.' La suppression de la table temporaore a echouee','sqlite');
+				.' La suppression de la table d\'origine a echouee','sqlite');
 		return false;						
 	}
 	
+	// 4) renommer la table temporaire avec le nom de la table d'origine
+	if (!sql_query("ALTER TABLE $table_tmp RENAME TO $table")){
+		spip_log("SQLite : ALTER TABLE table $ordre column :"
+				.' Le renommage de la table temporaire avec le nom de la table d\'origine a echoue','sqlite');
+		return false;						
+	}
+		
 	return true;					
 }