Oracle
 sql >> Baza danych >  >> RDS >> Oracle

Wyzwalacz bazy danych Oracle APEX — problemy z odwoływaniem się do kolumn bazy danych

Możesz wykonać dopasowanie ciągów, aby przetestować każdy wiersz:

create or replace trigger "ORDER_PARTS_T1"
BEFORE
insert or update on "ORDER_TABLE"
for each row
begin
  update PARTS_TABLE p
  set p.ASSIGNED_ORDER_NUMBER = :new.ORDER_NUMBER
  where instr(':' || :new.ORDER_PARTS_LIST || ':'
             ,':' || p.PART_NUMBER || ':') > 0;
end;

Na przykład, jeśli ORDER_PARTS_LIST to '123:456:789' , INSTR znajdzie dopasowania dla identyfikatorów 123, 456 i 789, ale nie na przykład 124, 45 lub 8.

Gdy części zostaną usunięte z zamówienia, będziesz potrzebować innego wyzwalacza do NULL odpowiednie pola w PARTS_TABLE :

create or replace trigger "ORDER_PARTS_T1"
BEFORE
update on "ORDER_TABLE"
for each row
begin
  update PARTS_TABLE p
  set p.ASSIGNED_ORDER_NUMBER = NULL
  where instr(':' || :new.ORDER_PARTS_LIST || ':'
             ,':' || p.PART_NUMBER || ':') = 0
  and instr(':' || :old.ORDER_PARTS_LIST || ':'
             ,':' || p.PART_NUMBER || ':') > 0;
end;


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. jak wygląda indeks B-drzewa w więcej niż 1 kolumnie?

  2. BŁĄD:ORA-00917:brak przecinka podczas używania hibernacji z istniejącą sekwencją w oracle

  3. Oracle:Jeśli tabela istnieje

  4. Jak udokumentować bazę danych

  5. Jak przypisać licznik na podstawie warunku