sql >> Databasteknik >  >> RDS >> Oracle

Oracle APEX Databas Trigger - Problem med att referera till databaskolumner

Du kan göra strängmatchning för att testa varje rad:

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;

Så till exempel, om ORDER_PARTS_LIST är '123:456:789' INSTR kommer att hitta matchningar för id 123, 456 och 789, men inte 124, 45 eller 8, till exempel.

När delar tas bort från en beställning behöver du en annan trigger än NULL lämpliga fält i 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. Postgres Långsam grupp efter fråga med max

  2. Hur bifogar jag en fil från katalogen till e-postmeddelandet skickat med utl_smtp

  3. hur man konverterar ett strängdatum till datumformat i oracle10g

  4. laravel vältalig relation från frågebyggaren