0

注文テーブルの最後の行は

Order_ID      Product
  555          Apple

正確な時間に発生する2つの注文が、同じOrder_ID、つまり次の注文で556を取得しないようにするには、どうすればよいですか。これが私に起こっていることだからです。私のテーブルはINNODBを使用しています。

実際には、Order_IDは自動インクリメントフィールドです。そして、Show Table Statusクエリを使用し、[Auto-increment]を使用して次のOrder_iDを取得しています。助言がありますか?

4

2 に答える 2

1

Order_ID属性を使用して列を定義し、AUTO_INCREMENTMySQL に値を割り当てさせます (last_insert_id挿入が成功した後、ドライバーに を要求して値を取得します)。

ALTER TABLE orders MOFIFY Order_ID BIGINT UNSIGNED NOT NULL AUTO_INCREMENT;

次に、レコードを挿入するには、値を指定しないだけで、Order_ID自動的に割り当てられます。

INSERT INTO orders (Product) VALUES ('Apple');
于 2012-10-15T12:31:05.843 に答える
1

order_id + 1 を「ハードコーディング」していると思います...

テーブルで Auto_increment を使用してください。order_id が繰り返されないことが保証されます。

http://dev.mysql.com/doc/refman/5.0/en/example-auto-increment.html

あなたの場合、テーブルのコピーを作成し(バックアップ)、テーブルを変更して auto_increment を追加してから再度インポートします

于 2012-10-15T12:31:37.630 に答える