Выполнить несколько запросов как одну транзакцию dblink
Я работаю в приложении Java, где мне нужно выполнить эти два запроса (как строки в Java) одновременно и откатить транзакцию, если есть ошибки.
SELECT dblink_exec('hostaddr=xxx.xx.xxx.xxx port=5432 dbname=bdname user=myuser password=mypass connect_timeout=2',
'INSERT INTO table3(field4)
VALUES (5)') AS result;
SELECT dblink_exec('hostaddr=xxx.xx.xxx.xxx port=5432 dbname=bdname user=myuser password=mypass connect_timeout=2',
'UPDATE table1 SET field2 = field2 + 3.0 WHERE field1 = 16436') AS result;
ОБНОВИТЬ
Я создал одну строку с двумя запросами, разделенными;
как в комментариях предложить
ОБНОВИТЬ
Я попробовал атомарные транзакции JDBC как код в Java. Я заставляю второй sql завершиться с ошибкой, но даже если я указываю .setAutoCommit (false); ссылка dblink затронула другую базу данных первым запросом. Я попробовал тот же код без транзакций dblink, и откат работает хорошо. проблема в dblink
ОБНОВЛЕНИЕ Java
public static boolean ejecutarTransaccionDblink(String sql) {
boolean estado = false;
try {
Statement sentencia = conexion.createStatement();
conexion.setAutoCommit(false);
if (sql.length() != 0) {
if (sentencia.execute(sql)) {
conexion.commit();
estado = true;
}
}
} catch (SQLException ex) {
System.out.println(ex.toString());
try {
estado = false;
conexion.rollback();
} catch (SQLException ex1) {
}
} finally {
try {
conexion.setAutoCommit(true);
return estado;
} catch (SQLException ex) {
return estado;
}
}
}
Спасибо за вашу помощь.