(Javaベースの)メッセージングWebアプリを作成しようとしています。メッセージは、次の3つのテーブルを使用してMySQLを使用して保存されます。
- 'messages':id主キー('idmessage')とメッセージ('message')の2つの列があります。
- 'tags':ユーザーはメッセージに関連付けられたタグも入力します。これには、タグ(主キーでもある)とカウント(「カウント」)の2つの列があります。
- 'message_tag_link':メッセージとタグの間には多対1の関係があるため、3番目のリンクテーブルがあります。これには2つの列があり、メッセージへの外部キー('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で「count」が増加します。メッセージを完全に削除する方法を見つけようとしています。リンクテーブルの列に外部キーのon delete cascade
説明がありますが、次に何をすべきかわかりません。与えられた'messageid'について、私は次のことをする必要があります:
- 'messages'テーブルの行を削除します
- 'message_tag_link'テーブルの関連する行を削除します
- メッセージの削除が成功した場合は「タグ」テーブルのカウント値をデクリメントするか、カウントがゼロになった場合はこの行を完全に削除します。
Javaを使用してMySQL内でこれをすべて行うことは可能PreparedStatement
ですか?どんなポインタでも大歓迎です。私は完全なMySQL初心者なので、親切にしてください!