sql >> データベース >  >> RDS >> Oracle

OracleAPEXデータベーストリガー-データベース列の参照に関する問題

    文字列照合を実行して、各行をテストできます:

    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はID 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. OracleでアトミックMERGEを実行できますか?

    2. MySQL列=0はtrueを返します

    3. 親IDの順にレコードを選択する

    4. 複雑なクエリで順序付けられたシーケンスランクを生成する