проблема ссылочной целостности db2

Ситуация довольно серьезная, у нас есть таблица в DB2 на AS400, которая определила внешний ключ для другой таблицы, поэтому мы вводим запись, которая имеет обычный идентификатор ссылочной таблицы, поэтому, когда мы вводим SQL-вставку через интерфейсный инструмент, все прошло нормально.

Проблема возникает, когда эта вставка должна быть выполнена через java-приложение, которое использует Spring Framework (только обработчик SQL, веб-службы...), поэтому все завершается с PreparedStatement с использованием драйверов jdbc в jt400.jar. Мы получили сообщение «проверка ссылочной целостности не удалась», что, как мы проверили, невозможно.

Есть ли у кого-нибудь подобный опыт? Должны ли мы обновить библиотеку JTOPEN? Сейчас актуальная версия 6.5, мы используем 6.3 в продакшене и опасаемся негативных последствий обновления до 6.5.

Забыл упомянуть, что перезапуск Tomcat (сервера приложений) не имеет никакого эффекта, но если я перезапущу linux box (ubuntu 8.10), все будет работать нормально. Подключение к БД администрируется JNDI.


person ante.sabo    schedule 20.05.2009    source источник
comment
Применяется ли внешнее ограничение немедленно или должно быть отложено? Нет причин, по которым его следует откладывать в производственной среде, но, возможно, он был установлен по ошибке.   -  person Tamas Czinege    schedule 20.05.2009
comment
отложенность установлена ​​на 7, что бы это ни значило. Я сделал несколько обновлений, чтобы задать вопрос, мы не используем сопоставление пружин, а делаем «прямую» вставку в таблицы...   -  person ante.sabo    schedule 20.05.2009


Ответы (1)


Возможно, вы находитесь внутри транзакции, и данные, которые вы собираетесь поместить, несовместимы, а затем выполняется откат, поэтому вы не должны увидеть ничего неправильного.

person ATorras    schedule 20.05.2009
comment
нет, это не совсем так. Только один оператор выполняет работу, данные в таблице сотрудников уже вставлены, сотрудник с идентификатором 40 вставляет новый вид документа, в котором столбец OPER ссылается на сотрудника (ID), в котором мы пытались поместить номер 40... - person ante.sabo; 20.05.2009
comment
Вы пытались сделать эти обновления напрямую через соединение JDBC? - person ATorras; 20.05.2009