flutter - 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 中做到这一点。
我需要做第三张桌子吗?
任何帮助,将不胜感激。
解决方案
您应该注意的第一件事是仅使用 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
)""");
}
您可以根据需要根据特定用例选择其他列
推荐阅读
- json - 带有 JSON 参数的 REST API 请求
- javascript - 使用 sinon 和 babel-plugin-rewire 时无法在模块内存根函数
- python - Tensorflow 多 GPU 重用与复制?
- arrays - 如何使用 lodash 对包含另一个数组的数组进行排序?
- c# - 从 DataGridView 检索数据到 TEXTBOXS
- c# - 尝试使用 Graph 从 Azure 获取用户配置文件信息
- ckeditor - 为什么CKEditor5使用promise来初始化它?
- javascript - 值不为空时如何设置required
- r - 使用 grid.arrange 排列图时出错
- java - Selenium WebDriver:使用循环在搜索结果中提取字符串