Oracle
 sql >> база данни >  >> RDS >> Oracle

Oracle APEX Database Trigger - Проблеми с рефериране на колони на база данни

Можете да направите съпоставяне на низове, за да тествате всеки ред:

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;

Така например, ако ORDER_PARTS_LIST е '123:456:789' , INSTR ще намери съвпадения за идентификатори 123, 456 и 789, но не и 124, 45 или 8, например.

Когато части се премахнат от поръчка, ще ви е необходим различен тригер за NULL съответните полета в 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. Писане в ExcelSheet с помощта на пакет UTL_FILE в Oracle

  2. ограничение за целостта на оракул

  3. Функция POWER() в Oracle

  4. SQL Server еквивалент на функцията WM_CONCAT

  5. Твърде дълга грешка в низовия литерал на Oracle Sql Developer