2009-05-20 2 views
1

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

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

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

Вспомните, перезагрузка Tomcat (сервер приложений) не имеет никакого эффекта, но если я перезапущу linux box (ubuntu 8.10), все будет хорошо. Соединение с БД осуществляется JNDI.

+1

Является ли иностранное ограничение принудительным или немедленно отложенным? Нет причин, по которым он должен быть отложен в производственной среде, но, возможно, он был установлен по ошибке. –

+0

деферрабильность установлена ​​равной 7, что бы это ни значило. Я сделал som обновления, чтобы допросить там, мы не используем отображение пружин, скорее мы делаем «прямую» вставку в таблицы ... –

ответ

0

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

+0

Нет, это определенно не так. Только один оператор выполняет работу, данные в таблице сотрудников уже вставлены, emplyee с ID 40 вставляет новый вид документа, который имеет столбец OPER, ссылающийся на сотрудника (ID), в котором мы пытались поместить номер 40 ... –

+0

Вы пробовали сделать эти обновления с помощью JDBC-соединения напрямую? – ATorras

Смежные вопросы