Flutter 颤振SQFlite多对多关系设置

Flutter 颤振SQFlite多对多关系设置,flutter,dart,many-to-many,sqflite,Flutter,Dart,Many To Many,Sqflite,我有一个Flatter应用程序,需要两个表,表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'),

我有一个Flatter应用程序,需要两个表,表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);
  }
静态未来数据库()异步{
final dbPath=wait sql.getDatabasesPath();
返回sql.openDatabase(path.join(dbPath,'my_db.db'),
onCreate:(数据库,版本){
返回db.execute(
'创建表A(id INT主键、标题文本、说明文本);创建表B(id INT主键、标题文本、说明文本);';
},版本:1);
}
我没有把这两个表相互关联起来,因为我不知道如何在SQFLite中这样做

我需要做第三张桌子吗


任何帮助都将不胜感激。

您应该注意的第一件事是,仅使用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
            )""");
  }
您还可以根据特定的用例,根据需要选择其他列