Узел Visual Studio: отладка в рабочих потоках (узел 11)

Вот полный пример того, как это можно сделать. Однако вам нужны привилегии запроса flashback в дочерней таблице.

Вот настройка.

create table parent_tab
  (parent_id number primary key,
  val varchar2(20));

create table child_tab
    (child_id number primary key,
    parent_id number,
    child_val number,
     constraint child_par_fk foreign key (parent_id) references parent_tab);

insert into parent_tab values (1,'Red');
insert into parent_tab values (2,'Green');
insert into parent_tab values (3,'Blue');
insert into parent_tab values (4,'Black');
insert into parent_tab values (5,'White');

insert into child_tab values (10,1,100);
insert into child_tab values (20,3,100);
insert into child_tab values (30,3,100);
insert into child_tab values (40,4,100);
insert into child_tab values (50,5,200);

commit;

select * from parent_tab
where parent_id not in (select parent_id from child_tab);

Теперь удалите подмножество детей (с родителями 1,3 и 4 - но а не 5).

delete from child_tab where child_val = 100;

Затем получите parent_ids из текущего состояния COMMITTED child_tab (т. е. до того, как они были до удаления), и удалите те, которые ваш сеанс НЕ удалил. Это дает вам подмножество, которое было удалено. Затем вы можете удалить их из родителя_tab

delete from parent_tab
where parent_id in
  (select parent_id from child_tab as of scn dbms_flashback.get_system_change_number
  minus
  select parent_id from child_tab);

«Зеленый» все еще там (так как он еще не имел записи в дочерней таблице), а «Красный» все еще существует (так как он все еще имеет запись в дочерней таблице)

select * from parent_tab
where parent_id not in (select parent_id from child_tab);

select * from parent_tab;

Это экзотическая / необычная операция, поэтому, если бы я это делал, я, вероятно, был бы немного осторожен и блокировал бы дочерние и родительские таблицы в эксклюзивном режиме в начале транзакции. Кроме того, если дочерняя таблица была большой, она не была бы особенно эффективной, поэтому я бы выбрал PL / SQL-решение, такое как Rajesh's.

6
задан user2326971 18 January 2019 в 10:13
поделиться

1 ответ

Правовая оговорка : ответ ниже описывает мой опыт, отлаживая рабочие потоки, но не используя VS Code, который был исходным вопросом. Я думал, что будет полезно знать альтернативные опции так или иначе, так как кажется, что с сегодняшнего дня единственная опция отладить рабочие потоки является Webstorm.

опция

Webstorm возможно отладить использование рабочих потоков Webstorm: https://blog.jetbrains.com/webstorm/2018/10/webstorm-2018-3-eap-6 / я попробовал его, и это работает действительно хорошо (как зарегистрировано в ссылку выше).

инструменты Chrome

я попытался отладить рабочие потоки с помощью хрома dev инструменты, после того же подхода, в котором Вы отладили бы веб-рабочих, но он не работал. При отладке веб-рабочих они обнаруживаются как это в хромовых инструментах

enter image description here

, К сожалению, рабочие потоки не делают. Когда рабочий поток работает, отладчик не показывает его, и не позволяет Вам провести точки останова, ни ступает через код. Я подозреваю, что это может быть из-за этого: https://github.com/nodejs/node/issues/26609

VS Code

VSC не имеет функции для отладки рабочих потоков. Интересно, VCS также не имеет функции для отладки Рабочих по сети. Это - явное решение с их стороны: https://github.com/Microsoft/vscode-chrome-debug/issues/675

0
ответ дан edoDev 18 January 2019 в 10:13
поделиться
Другие вопросы по тегам:

Похожие вопросы: