0

Mysql テーブルがあります。

  • リクエスト - Request_id、Request_message

ユーザーが HTML フォームに Request_message を入力した後、送信ボタンをクリックします。requests テーブルからリクエスト ID を生成し、行を追加します。(テーブルには 2 つのヒットがあり、1 つは最後の request_id を取得するためのもので、もう 1 つはテーブルに行を追加するためのものです)。これは避けたい。

また、同時に 7 ~ 8 人のユーザーが送信ボタンを押すと、同じ最後の request_id がテーブルから取得されます。最後の request_id に 1 を追加し、行を追加しようとします。1つを除いて、すべて主キー制約エラーが発生しています..これを回避するには??

あなたの提案を提供してください。

ありがとうございます

4

3 に答える 3

2

主キーにはAUTO_INCREMENTを使用します。

編集: 列に整数型を使用しない場合、別の解決策は行レベルのロックを使用することです。

于 2012-05-28T07:06:59.963 に答える
0

spを使用して、レコードをテーブルに挿入します。

また

テーブルの主キーに自動番号フィールドを使用します。

また

使用する

 INSERTINTO request 
            (Request_id, 
             Request_message) 
VALUES      ( (SELECT 'REQ' + Lpad(Ifnull(Max(Request_id) + 1, 0), 4, 0) 
               FROM   request), 
              yourMessage) 
于 2012-05-28T07:07:46.637 に答える
0

最初の質問では、そのようなことをすることができます

INSERT INTO request (Request_id,Request_message) VALUES (
   (SELECT MAX(Request_id) FROM request), yourMessage)

以上、pkの自動インクリメントを使用できます

さらに、DBMSにすべての増分/挿入の問題を要求する場合は、pkに関連する問題を直接回避できます。

于 2012-05-28T07:08:00.720 に答える