oldb0y писал(а):
Хм, не совсем понял мысль. Вы согласны что SQL-запрос и метод пытаются удалить одну и ту же запись, просто ищя по разным полям?
Да, согласен. Но не знаю почему так получилось.
oldb0y писал(а):
Вот как-то так решил проблему с мусором:
Код:
String query_d = "SELECT tb0.id,tb1.id FROM contract_tree_link AS tb0 " +
"LEFT JOIN module_tariff_tree AS tb1 ON tb0.tree_id = tb1.tree_id " +
"WHERE tb0.cid = " + contractId + " AND tb0.title LIKE '%" + like_and_title + "%'";
PreparedStatement psd = con.prepareStatement( query_d );
ResultSet rsd = psd.executeQuery();
int deletePTid = 0;
int deleteTree = 0;
if( rsd.next() ) { deletePTid = rsd.getInt(1); deleteTree = rsd.getInt(2);}
if(deletePTid != 0) {
// Удаляем запись тарифного дерева ПТ
String dq1 = "DELETE FROM module_tariff_tree WHERE id = ?";
PreparedStatement dps1 = con.prepareStatement( dq1 );
dps1.setInt( 1, deleteTree );
dps1.executeUpdate();
// Удаляем непосредственно сами тарифные деревья ПТ
String dq2 = "DELETE FROM mtree_node WHERE mtree_id = ?";
PreparedStatement dps2 = con.prepareStatement( dq2 );
dps2.setInt( 1, deleteTree );
dps2.executeUpdate();
// Удаляем ПТ
PersonalTariffManager PTM = new PersonalTariffManager( con );
PTM.deletePersonalTariff( deletePTid );
}
я не понял, зачем там сложно ? чем вас
Код:
new TariffTreeBuilder( con ).deleteTree( tariff.getTreeId() );
не устраивает. Проблему в приведенном выше мной куске кода какая? что он пытается делать одно и тоже 2 раза ? - так это не совсем проблема. Или что-то он все-таки не удаляет ? Что именно он не удаляет? Если он что-то не удаляет , то исправим.