首页 > 解决方案 > Flutter SQFlite 多对多关系设置

问题描述

我有一个 Flutter 应用程序,它需要两个表,表 A 和表 B,现在 A 中的每个项目都有 B 中的许多项目,并且 B 中的每个项目可以属于 A 的许多项目,所以这是一个多对多的关系.

这是我写的代码:

static Future<Database> database() async {
    final dbPath = await sql.getDatabasesPath();
    return sql.openDatabase(path.join(dbPath, 'my_db.db'),
        onCreate: (db, version) {
      return db.execute(
          'CREATE TABLE A(id INT PRIMARY KEY, title TEXT, description TEXT); CREATE TABLE B(id INT PRIMARY KEY, title TEXT, description TEXT);');
    }, version: 1);
  }

没有将这两个表相互关联,因为我不知道如何在 SQFLite 中做到这一点。

我需要做第三张桌子吗?

任何帮助,将不胜感激。

标签: flutterdartmany-to-manysqflite

解决方案


您应该注意的第一件事是仅使用 Sql 并没有什么不同

假设您有表 AB,您可以按如下方式进行设置

Future _create(Database db, int version) async {
    await db.execute("""
            CREATE TABLE C (
              id INTEGER PRIMARY KEY, 
              A_id INTEGER NOT NULL,
              B_id INTEGER NOT NULL,
              FOREIGN KEY (A_id) REFERENCES A (id) 
                ON DELETE NO ACTION ON UPDATE NO ACTION,
              FOREIGN KEY (B_id) REFERENCES B (id) 
                ON DELETE NO ACTION ON UPDATE NO ACTION
            )""");
  }

您可以根据需要根据特定用例选择其他列


推荐阅读