請求書を処理するために、いくつかの 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 です (外部キー制約が多用されているため)