前回の質問にアドバイスを投稿してくれた方ありがとうございます。
あの後どうにかできることをやってみて何とか完成に近づけることができました。
それでまた質問をしたいのでお願いします。
今回はデータベースの重複にかかわる問題で
java
1try (Connection c = ((DataSource request.getServletContext().getAttribute("dataSource")).getConnection()) { 2 SaleFormTable sft = new SaleFormTable(c); 3 SaleDetailTable sdt = new SaleDetailTable(c); 4 5 int length = Integer.parseInt(request.getParameter("length")); 6 for(int i = 0; i < length; i++) { 7 int saleFormCol = i + 1; 8 String productCode = request.getParameter("productCode" + i); 9 int saleNum = Integer.parseInt(request.getParameter("num" + i)); 10 int salePrice = Integer.parseInt(request.getParameter("unitPrice" + i)); 11 int saleTax = Integer.parseInt(request.getParameter("tax" + i)); 12 int saleTotal = Integer.parseInt(request.getParameter("total" + i)); 13 14 //SQL文実行(処理区分によって行う処理が異なる) 15 switch(category) { 16 case "register": 17 sft.insert(formNumber, saleDay, clientCode, branchCode, staffCode, saleComment); 18 sdt.insert(formNumber, saleFormCol, productCode, saleNum, salePrice, saleTax, saleTotal); 19 break; 20 case "modify": 21 sft.update(formNumber, saleDay, clientCode, saleComment); 22 sdt.delete(formNumber); 23 sdt.insert(formNumber, saleFormCol, productCode, saleNum, salePrice, saleTax, saleTotal); 24 break; 25 case "delete": 26 sdt.delete(formNumber); 27 sft.delete(formNumber); 28 break; 29 } 30 }
といった感じでデータベースの挿入や更新作業を行うのですが、挿入の時一つの伝票番号(formNumber)に複数行のデータを挿入するといったことをするのですが、sftというテーブルとsdtというテーブルにformNumberを挿入するので
**Duplicate entry '173'(←formNumberの部分) for key 'PRIMARY'**といったエラーが出ます。
sftというテーブルにformNumberを挿入し、sdtテーブルの方はそのformNumberを参照し以下の引数を挿入する形になっています。
これを回避するためにはどうしたらよいですか?(このエラーの意味は何となく理解してるつもりです。)
同じエラーを体験した人、また何か知っている人は対策やアドバイスを教えていただけるとありがたいです。
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
退会済みユーザー
2018/07/16 13:04
退会済みユーザー
2018/07/16 13:06
退会済みユーザー
2018/07/16 13:12