问题描述
我有一个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,description TEXT);');
},version: 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
)""");
}
并且您可以根据特定用例根据需要添加其他列