如何链接SQL数据库条目?
我有一个包含注释的SQLite数据库,其中包含列_id、title、details和listid _id是自动递增的主键 标题和详细信息是字符串数据字段 listid是指向另一个表中列表名的外键 我想找到一种方法,使多个列表中的注释或注释以这样的方式链接,即更新一个将更新另一个或通过其他方式同时编辑 总体目标是在多个列表中包含同一注释的副本,您可以在其中编辑一个,其余的将自动更新如何链接SQL数据库条目?,sql,database,sqlite,sql-update,Sql,Database,Sqlite,Sql Update,我有一个包含注释的SQLite数据库,其中包含列_id、title、details和listid _id是自动递增的主键 标题和详细信息是字符串数据字段 listid是指向另一个表中列表名的外键 我想找到一种方法,使多个列表中的注释或注释以这样的方式链接,即更新一个将更新另一个或通过其他方式同时编辑 总体目标是在多个列表中包含同一注释的副本,您可以在其中编辑一个,其余的将自动更新 我曾考虑过添加一个额外的列,其中包含一种链接id,所有链接笔记都将共享该id,从而创建一种更新其他笔记的方法。一个笔
我曾考虑过添加一个额外的列,其中包含一种链接id,所有链接笔记都将共享该id,从而创建一种更新其他笔记的方法。一个笔记可以有多个列表,一个列表可以有多个笔记
您需要一个具有注释id和列表id的关联表,SQLite 3.6.19+本机支持并强制外键,请参阅。有三个表:
NOTE: _id, title, details
LIST: _id, listname
NOTES_IN_LIST: note_id, list_id
然后,无论何时向列表中添加注释,都会向注释列表中的注释添加新行,该行将该注释的注释id连接到列表的列表id
无论何时编辑注释,都只需在注释表中进行编辑
每当您列出您有id的列表内容时,您都要进行如下选择:
SELECT title, details
from NOTE
where NOTE._id in (
SELECT note_id from NOTES_IN_LIST
where list_id=<your list id>
)
或
嗯,要将旧音符转换为新结构,我会:
使用新的自动增量id字段创建新的notes表
然后选择distinct note title,将详细信息记录到新的notes表中
然后在old_title=new_title和old_detail=new_detail上将旧注释表连接到新注释表,然后从中选择新注释id和旧列表id,然后将结果表插入到notes_IN_列表表中
然后我想你可以删除旧的notes表
确保没有人在发生这种情况时编辑或添加注释,否则您将丢失注释
此外,您还需要更新UI以进入新的注释表,将注释放入列表中,而不是通过复制,而是通过在注释列表中插入新行等方式。请您解释得更清楚一点好吗?外键不支持将两个以上的注释链接在一起。不幸的是,这可能很难实现,因为我有一个数据库,假设每个注释层次结构有一个列表。如果要对关联表布局进行此更改,我不确定是否可以安全保存用户的数据。如何使用SQL编辑现有数据库以匹配此格式?现在在我的答案中添加了对此的一般说明。
SELECT title, details
from NOTE, NOTES_IN_LIST
where
NOTE._id=NOTES_IN_LIST.note_id
and
NOTES_IN_LIST.list_id=<your list id>