【问题标题】:How to delete multiple tables in one query?如何在一个查询中删除多个表?
【发布时间】:2019-03-17 17:36:11
【问题描述】:

我需要删除两个使用相同 ID 的表。到目前为止,我使用的是这种方法:

public Integer deleteSplitMondayByID (String ID){
        SQLiteDatabase database = this.getWritableDatabase();
        return database.delete(TABLE_NAME, "ID = ?", new String[]{ID});
    }

如何再添加一张桌子?我已经尝试过类似

(TABLE_NAME, TABLE_NAME2 "ID = ?", new String[]{ID})
(TABLE_NAME + " , " + TABLE_NAME2 "ID = ?", new String[]{ID})
(TABLE_NAME + " UNION " + TABLE_NAME2 "ID = ?", new String[]{ID})

但我无法删除它们。那么,我该怎么做呢?

【问题讨论】:

  • 这是不可能的。你为什么要那个?
  • 你需要为每个表执行一个命令
  • 顺便说一下,术语“查询”仅指 SELECT 语句。无论复杂程度如何
  • 只需在单个事务中运行两个删除语句,这样对于使用同一个数据库的其他任何东西来说,它都会显得原子。

标签: java android sql sqlite


【解决方案1】:

正如评论——您不能在一个语句中从两个表中删除,尤其是当它在 Java 库中被抽象时。试试这样的:

public Integer deleteSplitMondayByID (String ID){
  int delcount = 0;
  SQLiteDatabase database = this.getWritableDatabase();
  database.beginTransaction();
  try 
    {
      delcount += database.delete(TABLE_NAME, "ID = ?", new String[]{ID});
      delcount += database.delete(TABLE_NAME2, "ID = ?", new String[]{ID});
      database.setTransactionSuccessful();
    } finally {         
      database.endTransaction();
    }
  return delcount;
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-06-25
    • 2010-11-17
    相关资源
    最近更新 更多