2

請求書を処理するために、いくつかの MySQL テーブルをコーディングしようとしています。

私の計画は、これを 3 つのメイン テーブルに分割することです。

create table invoice
(
  id auto_increment,
  client (foreign key),
  created (date),
  *etc*...
)

create table products
(
  id auto_increment
  *product info*...
)

create table invoice_products
(
  invoice_id (references invoice.id)
  row (resetting auto_increment)  <--THIS!!!
  product_id(references products.id)
  product_quantity INT
  primary key (invoice_id,row)
)

ジレンマは、新しい請求書が作成されると、invoice.id が auto_incremented になるということです。これは想定どおりです。私が望んでいないのは、invoice_products.row が新しい請求書ごとに 1 から始まることです。そのため、行 auto_increment は新しい請求書ごとに 1 から開始されますが、新しい行が既存の請求書 ID に追加された場合、行 ID は中断したところから続行されます。

これを達成する方法に関する推奨事項はありますか?

(短いバージョンのコードで、ジレンマを理解するのに十分であることを願っています)

アドバイスをよろしくお願いします!

編集: 明確化: データベース内のすべてのテーブルは InnoDB です (外部キー制約が多用されているため)

4

2 に答える 2

-1

このために、auto_increment 列を使用することはできません。各挿入の前に、実際の請求書の max(row) + 1 をクエリする必要があります。

于 2013-10-14T18:22:49.897 に答える