2013-06-19 45 views
-1

嗨,我在Java DB的NetBeans的初學者,違反外鍵

我有兩個表,即交易和檢查表中的事務表 我有一個名爲[TRANSID]列,[PayToOrder],[BANKCODE] ,[Checknumber]。 in checks table我有名爲[checknumber],[dateissued],[amount],[transID]的列。 我使用表單作爲條目。

這裏是我用來在數據庫中插入數據的代碼塊。

private void btnAddRecordActionPerformed(java.awt.event.ActionEvent evt) {            
    // TODO add your handling code here: 
    String trID = txtTransID.getText(); 
    int ID = Integer.parseInt(trID); 
    String pto = txtPtO.getText(); 
    String bc = txtBankCode.getText(); 
    String cn = txtCheckNum.getText(); 
    int chNum = Integer.parseInt(cn); 
    String amount = txtAmount.getText(); 
    int amnt = Integer.parseInt(amount); 
    String dates = (String) txtDate.getValue(); 

    try{ 
     stmt1 = con.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_UPDATABLE); 
     stmt2 = con.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_UPDATABLE); 
     String sql1 = "Select * From transactions"; 
     String sql2 = "Select * From checks"; 
     rs1 = stmt1.executeQuery(sql1); 
     rs2 = stmt2.executeQuery(sql2); 

     rs1.moveToInsertRow(); 
     rs2.moveToInsertRow(); 

     rs1.updateInt("transID", ID); 
     rs1.updateString("PAYTOORDER", pto); 
     rs1.updateString("BANKCODE", bc); 
     rs1.updateInt("checknumber", chNum); 
     rs2.updateInt("checknumber", chNum); 
     rs2.updateInt("AMOUNT", amnt); 
     rs2.updateString("DATEISSUED", dates); 
     rs2.updateInt("transID", ID); 

     rs1.insertRow(); 
     rs2.insertRow(); 
     stmt1.close(); 
     stmt2.close(); 
     rs1.close(); 
     rs2.close(); 

     JOptionPane.showMessageDialog(this, "Successfully Recorded!"); 
     } 

    catch(SQLException err){ 
     JOptionPane.showMessageDialog(this, err.getMessage()); 
    } 
} 

我一直得到一個錯誤:

「插入表‘交易’導致違反外鍵約束‘CHECKNUMBER’關鍵(輸入的數據)的

請,如果任何人都可以。見識一下這部分

感謝

隆美爾安藤

+0

主鍵TRANSACTIONS表中的[TRANSID]外鍵是[CHECKNUMBER]。 [Checknumber]是CHECKS表中的主鍵,外鍵是[TRANSID]。 –

回答

0

您正嘗試使用表CHECKS中不存在的CHECKNUMBER將數據插入到表TRANSACTIONS中。

因此,如果您有上述關係,則無法以此方式插入此數據,因爲transID和Checknumber對於兩者都是相同的。

您可以刪除一個外鍵或者你可以設置checknumber爲NULL交易的插入,插入檢查,然後更新交易支票號碼,什麼是應該

+0

謝謝先生,我刪除了一個外鍵,它的工作。現在的問題是我無法獲得數據完整性,這意味着數據以不同的傳輸方式輸入到事務表中,但是在檢查表中沒有輸入或允許輸入數據條目。 –

+0

發生了什麼事是事務表有兩行數據,並且檢查表只有一行數據,因爲它是系統不允許的。 –