1

アプリケーションのコメント データベースを開発していますが、解決方法がわからない次の問題があります。

基本的に、次のようなテーブルを取得しました。

comment_id | comment_text | thread_id | internal_id
-----------------------------------------------------
1              text1           1            1
2              text2           2            1
3              text3           1            2

基本的に、私が望むのは、thread_id = 1で挿入を行うと、internal_idが自動的に3になることです。

INSERT クエリを使用してこれを行う方法はありますか? PHP スクリプトを使用して最後の internal_id を取得し、この番号をインクリメントして挿入したくないためです。

前もって感謝します

4

4 に答える 4

1

いくつかのソリューションを使用できます。

  1. thread_id の特定のスコープ内で internal_id を計算するためのトリガーを使用することができます。 http://dev.mysql.com/doc/refman/5.5/en/trigger-syntax.html

  2. 構造を持つ追加のテーブルを作成します: thread_id, last_internal_id。このテーブルから読み取り、特定のコメントに値を入力し、last_internal_id をインクリメントします。

また、2 人のユーザーが同時に 2 つのコメントを追加した場合、internal_id の同じ値を取得できるアプローチを使用するかどうかは問題ではないことを考慮する必要があります。したがって、それを回避するには、ロックまたはトランザクションを使用する必要があります。

于 2013-07-20T18:05:38.483 に答える
0

以下を使用できます。

INSERT INTO TABLE_NAME (internal_id,comment_text,thread_id ) (
SELECT MAX(internal_id)+1,'TEXT',1 FROM TABLE_NAME WHERE thread_id =1 AND (
SELECT MAX(internal_id) FROM TABLE_NAME WHERE thread_id =1));

テストするデータベースがないため、間違っている可能性があります。間違いがあれば訂正してください。

于 2013-07-20T19:03:12.973 に答える