#java #jdbc #transactions #connection
#java #jdbc #транзакции #соединение
Вопрос:
Есть ли способ проверить, зафиксируется ли соединение без создания исключения?
Я знаю, что отсроченные ограничения внешнего ключа применяются только при фиксации транзакции.
Предоставляет ли JDBC (java 6) API какой-либо метод для запроса базы данных, будут ли все операции с момента начала подключения (или последней фиксации) успешными?
С уважением, Пабло.
Ответ №1:
Вы не можете этого сделать. Процесс фиксации занимает некоторое время, и в любой момент соединение может быть потеряно (представьте, что кто-то отключает кабель). Так что никаких гарантий здесь нет. Просто перехватывайте исключения — вот почему они были изобретены.
Комментарии:
1. @vladimit: Итак, как XADataSource обрабатывает двухфазную фиксацию?
2. @vladmir: Возможно, я неправильно сформулировал свой вопрос: в случае отложенных ограничений есть ли какой-либо способ запросить базу данных через jdbc для выполнения проверки ограничений?
Ответ №2:
Если вы используете базу данных Oracle, вы можете проверить, есть ли какие-либо нарушения отложенных ограничений, прежде чем фиксировать с помощью:
Statement stmt = connection.createStatement();
stmt.executeUpdate("SET CONSTRAINTS ALL IMMEDIATE");