DB2 SQL-Error: -803 when pasting into two related tables

I have two tables that are created using these operators:

CREATE TABLE Behandlungsvorgang (
 patientId SMALLINT NOT NULL REFERENCES Patient(id),
 datum DATE NOT NULL,
 notizen VARCHAR(100),
 PRIMARY KEY (patientId, datum)
);

CREATE TABLE behandelt (
 arztLogin VARCHAR(50) NOT NULL REFERENCES Arzt(login),
 behandlungsDatum DATE NOT NULL,
 behandlungsPatientId SMALLINT NOT NULL,
 medikamntPzn SMALLINT NOT NULL REFERENCES Medikament(pzn),
 krankheitName VARCHAR(50) NOT NULL REFERENCES Krankheit(name),
 PRIMARY KEY (arztLogin, behandlungsDatum, behandlungsPatientId, medikamntPzn, krankheitName),
 FOREIGN KEY (behandlungsDatum, behandlungsPatientId) REFERENCES Behandlungsvorgang(datum, patientId)
);

And I have a method that needs to insert data into these tables. He always puts the new data, so before placing them in behandeltI need to insert in Behandlungsvorgangto perform foreign key requirements. The method is as follows:

public void add(TreatmentProcess tp) throws StoreException {
    try {
        PreparedStatement psBehandlungsvorgang = connection.prepareStatement("INSERT INTO Behandlungsvorgang (patientId, datum, notizen) VALUES (?, ?, ?)");
        psBehandlungsvorgang.setInt(1, tp.getPatientId());
        psBehandlungsvorgang.setDate(2, tp.getDate());
        psBehandlungsvorgang.setString(3, tp.getNotes());

        psBehandlungsvorgang.executeUpdate();

        PreparedStatement psBehandelt = connection.prepareStatement("INSERT INTO behandelt (arztLogin, behandlungsDatum, behandlungsPatientId, medikamntPzn, krankheitName) VALUES (?, ?, ?, ?, ?)");

        for (Drug drug : tp.getDrugs()) {
            psBehandelt.setString(1, tp.getDoctor());
            psBehandelt.setDate(2, tp.getDate());
            psBehandelt.setInt(3, tp.getPatientId());
            psBehandelt.setInt(4, drug.getPzn());
            psBehandelt.setString(5, tp.getDisease());
            psBehandelt.addBatch();
        }

        psBehandelt.executeBatch();
    } catch (SQLException e) {
        throw new StoreException(e);
    } 
}

I always get an exception by saying de.unidue.inf.is.stores.StoreException: com.ibm.db2.jcc.am.go: DB2 SQL Error: SQLCODE=-803, SQLSTATE=23505, SQLERRMC=1;DBP10.BEHANDLUNGSVORGANG, DRIVER=4.7.85. If I manually insert the data, I get no errors. For example:

insert into Behandlungsvorgang values (1, '2014-01-25', 'Test');
insert into behandelt values ('doc', '2014-01-25', 1, 1, 'Kater');
insert into behandelt values ('doc', '2014-01-25', 1, 2, 'Kater');

What am I doing wrong in java code?

+4
source share
2 answers

. behandelt Behandlungsvorgang. . , .

+2

-803 , , . DB2 Linux/Unix/Windows, SQLERRMC , , :

SELECT INDNAME, INDSCHEMA
FROM SYSCAT.INDEXES
WHERE IID = <index-id>
  AND TABSCHEMA = 'schema'
  AND TABNAME = 'table'
+10

Source: https://habr.com/ru/post/1524694/


All Articles