Лучше всего создавать таблицы непосредственно перед началом использования базы данных.Вы не можете предполагать, что достаточно сделать это один раз (когда расширение установлено) - пользователь может удалить вашу базу данных позже по той или иной причине.Таким образом, вы должны сделать что-то вроде этого:
var dbConn = Services.storage.openDatabase(file);
if (!dbConn.tableExists("foo"))
{
// Database isn't initialized, do it now
dbConn.createTable("foo", "...");
}
Это также, как я обновляю структуру базы данных при обновлении расширений - если после открытия базы данных вы видите, что структура базы данных устарела, то вы обновляете ее.Таким образом, вы будете правильно обрабатывать сценарий, в котором ваше расширение было обновлено, но в какой-то момент база данных была понижена из-за восстановления резервной копии.