侵犯外键

时间:2013-06-19 01:23:44

标签: java javadb

您好我是java db netbeans的初学者。

我有两个表,即事务和检查表 在事务表中,我有名为[transID],[PayToOrder],[BankCode],[Checknumber]的列。 在检查表中,我有名为[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());
    }
}

我一直在收到错误:

“在表格上插入'TRANSACTIONS'导致密钥(输入数据)违反外键约束'CHECKNUMBER'。

如果有人可以在这部分启发我

谢谢

Rommel Ando

1 个答案:

答案 0 :(得分:0)

您正在尝试使用表CHECKS中不存在的CHECKNUMBER将数据插入到TRANSACTIONS表中。

因此,如果您拥有上述关系,则无法以这种方式插入此数据,因为transID和Checknumber对于两者都是相同的。

您可以删除其中一个外键,也可以将checknumber设置为NULL以插入事务,插入检查,然后将事务检查号更新为应该是