2017-03-07 28 views
1

この質問は尋ねられていますが、エラーを受け取り続けるために、MySQL - 1つのテーブルから別のテーブルにプライマリキーを挿入する(外部キー)

私はテーブルを持っている:私は値を挿入Customer_orders:

<sql:update var="count"> 
    insert into customer_order (order_date,delivered ,shipping_date,customer_number) 
    values (SUBDATE(NOW(), INTERVAL 17 DAY), 1, SUBDATE(NOW(), INTERVAL 14 DAY), <%= session.getAttribute("username") %>); 
    </sql:update> 

このCUSTOMER_ORDER持つ自動増分が

私はこのORDER_NUMBERを取り、それを挿入する「注文番号」と呼ばれるPRIMARY KEYテーブルに、私のような何か試してみました:

<sql:update var="count"> 
insert into order_item (item_code,value,order_number,quantity) 
values("<%= request.getParameter("item_code") %>", "<%= request.getParameter("item_price") %>",customer_order(order_number),1); 
</sql:update> 

を、私はさえORDER_NUMBERを挿入するさまざまな方法を試してみましたが、私はそれを動作させることはできません。 2つのテーブルを作成したとき、order_numberは2番目のテーブルの外部キーであるため、値自体を取得するとは思ったが、そうしなかった。

私は間違っていますか?

答えて

0

私はこのアプローチを提案しているためので、あなたは、単にそれはあなたを助けるかもしれない、トランザクション内の最初のクエリから最後に挿入IDを取得して、好きなように別のテーブルに挿入することができます

<sql:transaction dataSource="${snapshot}" > 
    <sql:update var="count"> 
     insert into customer_order (order_date,delivered ,shipping_date,customer_number) 
     values (SUBDATE(NOW(), INTERVAL 17 DAY), 1, SUBDATE(NOW(), INTERVAL 14 DAY), <%= session.getAttribute("username") %>); 
</sql:update> 
    <sql:query var="las_inserted_id" > 
    SELECT LAST_INSERT_ID() as last_Id 
    </sql:query > 
    /*now you got the last inserted id so that you can simply insert it in your new query as you like*/ 
<sql:update var="count"> 
    insert into order_item (item_code,value,order_number,quantity) 
    values("<%= request.getParameter("item_code") %>", "<%= request.getParameter("item_price") %>",${ las_inserted_id.rows[0].last_Id },1); 
</sql:update> 
</sql:transaction> 

NB:あなたのビューでSQLロジックコードを避けるために可能な限りお試しください!あなたのアプリケーションを簡単に維持できるようにしてください。

+0

dataSourceスナップショットは正確に何をしますか?その行にエラーが発生したため、データソースがヌルであると言いますと、 –

+0

'$ {snapshot}'には、ドライバ名、databseのユーザー名、passowrd、urlなどのデータベースを含むconenction instaceが含まれています'sql:setDataSource'という名前のタグで、' snapshot'をvarとします。どのように実装するかに応じてカスタマイズできます。 – PacMan

+0

なぜデータソースがnullであると言われているのでしょうか? –

関連する問題