У меня есть две таблицы в моей базе данных, DEPT1 и EMP1, которые ссылаются на департамент работодателей и список работодателей, таблица EMP1 содержит внешний ключ с именем refdept. моя проблема заключается в том, что я могу вставить данные в dept1 но не EMP1, это то, что я получаю как исключение:нарушен - родительский ключ не найден
instanciation de la connexion connexion1
nov. 17, 2014 7:54:12 PM tp.dao.DeptDAO create
Infos: create new instance
nov. 17, 2014 7:54:13 PM tp.dao.DeptDAO create
Infos: New instance is created.
nov. 17, 2014 7:54:13 PM tp.dao.DeptDAO create
Infos: Return Result == true
nov. 17, 2014 7:54:13 PM tp.dao.EmpDAO create
Infos: create new instance
nov. 17, 2014 7:54:13 PM tp.dao.EmpDAO create
Grave: ORA-02291: integrity constraint (BASE.FK_DEPT) violated - parent key not found
java.sql.SQLIntegrityConstraintViolationException: ORA-02291: integrity constraint (base.FK_DEPT) violated - parent key not found
at oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:440) at oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:440)
l'employéEMP5est ajouté à cet département
at oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:396)
at oracle.jdbc.driver.T4C8Oall.processError(T4C8Oall.java:837)
at oracle.jdbc.driver.T4CTTIfun.receive(T4CTTIfun.java:445)
at oracle.jdbc.driver.T4CTTIfun.doRPC(T4CTTIfun.java:191)
at oracle.jdbc.driver.T4C8Oall.doOALL(T4C8Oall.java:523)
at oracle.jdbc.driver.T4CCallableStatement.doOall8(T4CCallableStatement.java:204)
at oracle.jdbc.driver.T4CCallableStatement.executeForRows(T4CCallableStatement.java:1007)
at oracle.jdbc.driver.OracleStatement.doExecuteWithTimeout(OracleStatement.java:1315)
at oracle.jdbc.driver.OraclePreparedStatement.executeInternal(OraclePreparedStatement.java:3576)
at oracle.jdbc.driver.OraclePreparedStatement.executeUpdate(OraclePreparedStatement.java:3657)
at oracle.jdbc.driver.OracleCallableStatement.executeUpdate(OracleCallableStatement.java:4739)
at oracle.jdbc.driver.OraclePreparedStatementWrapper.executeUpdate(OraclePreparedStatementWrapper.java:1350)
at tp.dao.EmpDAO.create(EmpDAO.java:48)
at tp.TP.main(TP2.java:84)
nov. 17, 2014 7:54:13 PM tp.dao.EmpDAO create
Infos: Return Result == false
nov. 17, 2014 7:54:13 PM tp.dao.EmpDAO create
Infos: Return Result == false
Я попытался это:
insert into base.EMP1(ide,nome,rue,ville,refdept) values (7,"EMP5","agadir","dddd",(select idd from base.DEPT1 where nomd ='Math'));
Я получаю эту ошибку:
Error code 984, SQL state 42000: ORA-00984: column not allowed here
любая помощь pleaze и спасибо :(
ошибка заключается в том, что вы нарушаете ссылочную целостность, вы не можете вставлять значения в столбец с внешним ключом, если эти значения не существуют в родительской таблице – Aramillo
благодарит Aramillo за ваш ответ, как я могу добавить значения в refdept then ?? – Lina
добавить отсутствующие записи в таблицу DEPT1 – Aishu