2016-03-29 6 views
1

私は同じインボイスない

tbl_invoice(invno,company_name,date,total) primary key(invno) 

invnoテーブルが自動インクリメントされています。そして、別のテーブル

tbl_invoicelines(lineid,invno,productname,qty,unitprice,amount). 
primary key(lineid,invno) 

linenoは自動インクリメントである

私は、複数の請求書の行が存在する場合であっても、請求書のための特定のinvnoを得るように、どのように私は私のMySql insertステートメントを与える必要がありますか?
私はプログラミングに本当に新しいです。助けてください。

+0

INSERTはレコードを追加するためのものですが、レコードの取得を求めているので、SELECTステートメントを意味すると思いますか? – JvO

+0

私はあなたが得ようとしているものについてちょっと混乱しています。どのテーブルに行を挿入したいのですか? – Reversal

+0

使用しているプログラミング言語を教えて、現在のコードを表示すると、誰かがコード例を書くことができます。 – NineBerry

答えて

0

複数のステートメントを順番に使用します。

ステップ1: 最初に明細"insert into tbl_invoice ..."を実行して、請求書テーブルに行を挿入します。この挿入では、invnoの値を指定しないでください。 1つはデータベースによって自動的に選択されます。

手順2: 次に、次の文を実行します。"select LAST_INSERT_ID();"。これにより、データベースからinvnoとして選択されたIDが与えられます。 SQL文がローカル変数に返すIDを格納します。

ステップ3:次に、あなたがのようであれば1、すべての三つのステップを中心にトランザクションを使用して、ステップ2

であなたが取得した変数を使用して、SQL文字列を構築し、tbl_invoicelinesテーブルに対して複数のINSERT文を実行することができます手順が失敗した場合、それらの3つすべてをロールバックして元に戻すことができます。

+0

この例外が発生しました。「フィールド 'invno」にデフォルト値がありません。 –

+0

どのようなステップですか?最初か3番目のステップで? – NineBerry

+0

ステップ3. 'INSERT INTO tbl_invoiceline(pname、qty、unitprice、amount)values..' –

関連する問題