如果存在另一个表,如何在数据库中删除表?

时间:2013-08-07 20:40:05

标签: sql sqlite

如果存在另一个表,我正试图在数据库中删除表。

我使用此查询备份了一个表:

ALTER TABLE AppProfile RENAME TO AppProfile_backup

现在我想恢复备份表并通过以下方式删除AppProfile:

DROP TABLE AppProfile IF EXISTS TABLE AppProfile_backup
(ALTER TABLE AppProfile_backup RENAME TO AppProfile) IF NOT EXISTS AppProfile

但是,我在“IF”令牌附近的两行都会出现语法错误。

有关此问题的背景知识,我正在使用Android中的SQLiteOpenHelper类。您可以通过调用[db_handler_instance] .getWritableDatabase()。execSQL(“random query”);

来在该环境中执行原始SQL。

2 个答案:

答案 0 :(得分:1)

用Java做这个怎么样?您可以查询数据字典...

String sql = "SELECT 1 "
           + "  FROM sqlite_master  " 
           + " WHERE type = 'table' "
           + "   AND name = 'AppProfile_backup'";

Cursor cursor = db.rawQuery(sql, null);

...如果备份表存在,则删除表:

if (cursor.moveToNext())
    db.execSQL("DROP TABLE AppProfile;");
else
    db.execSQL("ALTER TABLE ...");

答案 1 :(得分:0)

您需要通过在数据库定义中查找表来检查表是否存在 像下面这样的东西应该做的伎俩

IF (EXISTS (SELECT * 
                 FROM INFORMATION_SCHEMA.TABLES 
                 WHERE TABLE_SCHEMA = 'TheSchema' 
                 AND  TABLE_NAME = 'TheTable'))