ошибка запроса в оракуле 11g - PullRequest
2 голосов
/ 22 августа 2011

Мой сеанс зависает, когда я выполняю этот запрос в Oracle 11g SQL * Plus:

SQL> 
 declare maxid number;

 begin

  delete from  measure_details
 where id in (select id from general_measures  where code in ('12345','12346'));

 delete from general_measures
 where code in (select code from general_measures  where code in ('12345','12346'));

 end;
 /

Ответы [ 2 ]

2 голосов
/ 22 августа 2011

Если он "зависает", то это, вероятно, означает, что одна или несколько строк, которые вы пытаетесь удалить, заблокированы незафиксированной транзакцией в другом сеансе - возможно, даже другом вашем собственном?

1 голос
/ 22 августа 2011

Если вы сталкиваетесь с тупиками в такого рода DML, моим первым подозрением будут неиндексированные внешние ключи.Взгляните на эту статью от Ask Tom.Если это так.Все, что вам нужно сделать, это создать соответствующие индексы.Но опять же, может быть, ваши столы просто огромные, и для их завершения требуется время.

...