如果存在另一个表,我正试图在数据库中删除表。
我使用此查询备份了一个表:
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。答案 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'))