Целесообразно ли поместить фиксацию в параллельную программу Oracle EBS?

я просто хочу спросить, целесообразно ли помещать фиксацию внутри процедуры PL/SQL, вызываемой параллельной программой Oracle EBS? Я всегда считал плохой практикой размещать коммиты внутри программы по следующим причинам:

  1. Если Программа сталкивается с Исключением после фиксации, мы больше не можем откатить ее.
  2. Пусть вызывающее приложение выполняет неявную фиксацию (в данном случае EBS).
  3. Как и в случае с рабочими процессами Oracle, мы никогда не должны размещать фиксации внутри пакета WF, поскольку это нарушит функцию «отката» рабочего процесса.

Тем не менее, я продолжаю видеть, как разработчики Oracle EBS помещают коммиты в одну параллельную программу. Есть мысли по этому поводу?

Спасибо!


person Migs Isip    schedule 25.10.2016    source источник


Ответы (1)


Не волнуйтесь, вы делаете правильно. Разработчики баз данных не знают о многих вещах, пока они не будут запущены в производство. Отказ от COMMIT внутри кода позволяет использовать этот код с другими единицами кода, не нарушая всей системной логики. Откат — это не только исключения, но и свобода пользователя отменить действие в интерактивной программе без повреждения базы данных.

Вот пример того, что происходит, когда один разработчик (разработчик unit_2) получает право использовать COMMIT.

create table t (i int);

create or replace procedure unit_1 as begin insert into t(i) values (1); end;
/
create or replace procedure unit_2 as begin insert into t(i) values (2); commit; end;
/
create or replace procedure unit_3 as begin insert into t(i) values (3); end;
/
create or replace procedure unit_4 as begin insert into t(i) values (4); end;
/

create or replace procedure all_units as begin delete t;unit_1;unit_2;unit_3;unit_4; end;
/

exec all_units;

select * from t;

         I
----------
         1
         2
         3
         4

set transaction t; exec all_units; rollback;


select * from t;

         I
----------
         1
         2
person David דודו Markovitz    schedule 25.10.2016
comment
Рад слышать, что я делаю это правильно. Следующая проблема заключается в том, как я могу сказать другим разработчикам, что это плохая практика. :Д спасибо! :) - person Migs Isip; 26.10.2016