Порядок срабатывания триггеров оракула (коллизия и мертвые часы)

У меня есть 2 триггера вставки, которые срабатывают в одной и той же таблице, они оба пытаются изменить содержимое строки таблицы, а затем происходит коллизия, или мой разработчик sql запускает бесконечное выполнение команд, и тогда мне нужно перезапустить БД. Как это исправить? Должен ли я объединить эти 2 триггера в 1 триггер? Или я должен попытаться управлять порядком стрельбы с помощью этой команды:

execute immediate 'alter trigger trigger_name disable';
execute immediate 'alter trigger trigger_name enable'; 

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

РЕДАКТИРОВАТЬ: ВОТ ТРИГГЕРЫ, С КОТОРЫМИ Я РАБОТАЮ:

create or replace
TRIGGER TRG_PROCED_SN_INS_CENA
AFTER INSERT ON STAVKA_NARUDZBENICE
FOR EACH ROW
DECLARE
pragma autonomous_transaction;
sifra_narudzbenice NUMBER;
BEGIN
paket_sn_sifnar.sifra_narudzbenice := :NEW.sifra_narudzbenice;
pStavkaNarudzbeniceInsert(paket_sn_sifnar.sifra_narudzbenice); 
COMMIT;
END;
/

create or replace
TRIGGER TRG_SN_INS_UPD_NAZIV
AFTER INSERT ON Stavka_narudzbenice
FOR EACH ROW
FOLLOWS TRG_PROCED_SN_INS_CENA
DECLARE
v_naziv_proizvoda VARCHAR2(25);
v_cena NUMBER;
BEGIN  
SELECT naziv_proizvoda INTO v_naziv_proizvoda 
FROM proizvod 
WHERE sifra_proizvoda=:NEW.sifra_proizvoda;
SELECT cena INTO v_cena
FROM stavka_kataloga 
WHERE sifra_proizvoda=:NEW.sifra_proizvoda;
UPDATE stavka_narudzbenice
SET naziv_proizvoda = v_naziv_proizvoda, cena = v_cena WHERE sifra_proizvoda =:NEW.sifra_proizvoda;
END;
/
0
задан Ilona 12 April 2018 в 06:39
поделиться