1

テーブルに行を挿入するajaxpostリクエストを含むシステムがあります。ajax呼び出しが2回呼び出されることがあるようです。つまり、同じデータが2つの隣接する行に2回挿入されます。

最初にクエリを追加して同じデータの行を選択し、行数=0の場合はそれを追加することを計画しています。2つのクエリを実行する必要を回避するより良い方法はありますか?

4

2 に答える 2

3

挿入ステートメントでINSERTIGNOREINTO構文またはINSERT...ON DUPLICATEKEYUPDATEを使用できます。

INSERT IGNOREを使用すると、キーが重複する場合、行は実際には挿入されません。ただし、ステートメントはエラーを生成しません。代わりに警告が生成されます。

INSERT IGNORE INTO mytable
    (primaryKey, field1, field2)
VALUES
    ('abc', 1, 2);
于 2012-04-14T15:00:59.157 に答える
0

これに対処する最善の方法は、アプリケーションで一時トークンを使用することです(これは、CSRFトークンとしても使用できますが、とにかく必要になる可能性があります)。

トークンが操作と一緒に送信される場合は、トークンを期限切れにして、繰り返されないようにします。

于 2012-04-14T14:47:23.167 に答える