Flutter 颤振SQFlite多对多关系设置
我有一个Flatter应用程序,需要两个表,表a和表B,现在a中的每个项目都有B中的许多项目,B中的每个项目都可以属于a中的许多项目,因此这是一种多对多关系 这是我写的代码: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'),
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并没有什么不同 假设您有表A和B,您可以按如下方式进行设置
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
)""");
}
您还可以根据特定的用例,根据需要选择其他列