我正在尝试创建(基于 java 的)消息传递 webapp。消息使用 MySQL 使用三个表存储:
- 'messages':有两列,一个 id 主键('idmessage')和消息('message')。
- 'tags':用户还输入与他们的消息相关联的标签。这有两列 - 标签(也是主键)和计数('count')。
- 'message_tag_link':由于消息和标签之间存在多对一的关系,因此我有第三个链接表。这有两列,消息的外键('fk_idmessage')和标签表的 ID('fk_tag')。
将消息插入数据库工作正常。我在 Java 中使用以下几行:
pst1 = connection.prepareStatement("INSERT INTO messages(message) VALUES (?)");
pst2 = connection.prepareStatement("INSERT INTO tags(tag,count) VALUES (?,1) ON DUPLICATE KEY UPDATE count = count + 1");
pst3 = connection.prepareStatement("INSERT INTO message_tag_link(fk_idmessage,fk_tag) VALUES (? , ?)");
可以看出,每次创建重复的标签条目时,pst2 中的“计数”都会增加。我正在尝试弄清楚如何完全删除一条消息。我on delete cascade
在链接表的列中对我的外键进行了描述,但不确定下一步该做什么。对于给定的“messageid”,我需要:
- 删除“消息”表中的一行
- 删除“message_tag_link”表中的关联行
- 当消息删除成功时减少'tags'表中的计数值,或者如果计数变为零则完全删除该行。
是否可以使用 Java 在 MySQL 中完成所有这些操作PreparedStatement
?任何指针都非常感谢。我是一个完全的 MySQL 新手,所以请善待!