netbeans derbysqlintegrityconstraintviolation导致外键冲突异常

2vuwiymt  于 2022-11-10  发布在  其他
关注(0)|答案(1)|浏览(150)

我正在使用netbeans创建一个gui。我创建了两个表,PETOWNER和ANIMALREG,其中表PETOWNER的主键是PETOWNERNIC,同时也是表ANIMALREG的外键。现在,当我必须在表ANIMALREG中插入一条记录时,我收到一个错误:derbysql完整性约束违反异常:对表'ANIMALREG'执行INSERT操作导致违反了key()的外键约束'SQLxxx'。该语句已回滚。下面是我的PETOWNER表:

CREATE TABLE "PETOWNER" (
"PETOWNERNIC" varchar(14) NOT NULL,
"FIRSTNAME" varchar(20) NOT NULL,
"LASTNAME" varchar(30) NOT NULL,
"ADDRESS1" varchar(20) NOT NULL,
"ADDRESS2" varchar(20) NOT NULL,
"ADDRESS3" varchar(20) NOT NULL,
"PHONE" varchar(8) NOT NULL,
PRIMARY KEY ("PETOWNERNIC")
);

这是我的ANIMALREG表:

CREATE TABLE "ANIMALREG" (
"PETID" VARCHAR(5) NOT NULL,
"PETNAME" VARCHAR(20) NOT NULL,
"PETOWNERNIC" VARCHAR(14) NOT NULL,
"BREED" VARCHAR(30),
"SEX" VARCHAR(1) NOT NULL,
"DOB" VARCHAR(10),
"WEIGHT" VARCHAR(5) NOT NULL,
"VACCINE" VARCHAR(100) NOT NULL,
PRIMARY KEY ("PETID"),
FOREIGN KEY ("PETOWNERNIC") REFERENCES 
"PETOWNER"("PETOWNERNIC")
);

和我的代码,我可以插入一个新的记录:

private void addNewPetButtonActionPerformed(java.awt.event.ActionEvent evt) {                                                
        // To insert a new pet record
        try{
            String sqlInsertpet = "insert into ANIMALREG (PETID, PETNAME,PETOWNERNIC, BREED,SEX,DOB,WEIGHT, VACCINE) values(?,?,?,?,?,?,?,?)";
            ps = con.prepareStatement(sqlInsertpet);
            ps.setString(1, PetIDTxt.getText());
            ps.setString(2, PetNameTxt.getText());
            ps.setString(3, PetOwnerNicTxt.getText());
            ps.setString(4, PetBreedTxt.getText());
            ps.setString(5, PetSexTxt.getText());
            ps.setString(6, PetDobTxt.getText());
            ps.setString(7, PetWeightTxt.getText());
            ps.setString(8, PetVaccineTxt.getText());
            ps.execute();
            JOptionPane.showMessageDialog(null, "New Pet added !!\nSuccess");
            updatePetTable();
            PetIDTxt.setText("");
            PetNameTxt.setText("");
            PetOwnerNicTxt.setText("");
            PetBreedTxt.setText("");
            PetSexTxt.setText("");
            PetDobTxt.setText("");
            PetWeightTxt.setText("");
            PetVaccineTxt.setText("");
        }catch(Exception e){
            JOptionPane.showMessageDialog(null, "Insert New Pet Error: "+e);
        }
    }

有人能告诉我我错过了什么吗?

vhipe2zx

vhipe2zx1#

我自己想出来的。我的代码写得很好。我在变量名上犯了一个错误,在我的代码中使用了表PETOWNER的变量名来插入一个新的宠物记录。

相关问题