sql >> Database >  >> RDS >> Oracle

Oracle APEX Database Trigger - Problemen met het verwijzen naar databasekolommen

U kunt tekenreeksen matchen om elke rij te testen:

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;

Dus als ORDER_PARTS_LIST bijvoorbeeld '123:456:789' is , vindt de INSTR overeenkomsten voor bijvoorbeeld de ID's 123, 456 en 789, maar niet voor 124, 45 of 8.

Wanneer onderdelen uit een bestelling worden verwijderd, heeft u een andere trigger nodig dan NULL de juiste velden in 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. Uitvoer selecteren/casten als geheel getal in SQL

  2. mysql TIME_WAIT; te veel verbindingen probleem

  3. Inzicht in SQL Server-beveiligingsfunctie HAS_Permis_BY_Name en zijn gebruiksgevallen

  4. Oracle ALS Bestaat DAN, ANDERS