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

(PLSQL)Oracleの更新時トリガーで変更された値をテストするための最も簡単な式は何ですか?

    これらの短い方法にはすべていくつかの欠点があります。それらは遅く、直感的でなく、バ​​グが発生する可能性があり(可能な限りマジック値を避けます)、AND / OR / IS NULL / ISNOTNULLなどの通常の条件よりも独自仕様です。

    NVL、DECODE、COALESCEなどは、思ったよりも高くつく可能性があります。

    私はこれをいくつかの異なる状況で何度も見てきました。簡単な例を次に示します。

    --Shorter method: Takes about 0.45 seconds
    declare
      j number;
    begin
      for i in 1 .. 1000000 loop
        j := i;
        if nvl(i <> j, (i is null) <> (j is null)) then
          null;
        end if;
      end loop;
    end;
    /
    
    --Normal method: Takes about 0.25 seconds
    declare
      j number;
    begin
      for i in 1 .. 1000000 loop
        j := i;
        if i <> j or (i is null and j is not null) or (i is not null and j is null) then
          null;
        end if;
      end loop;
    end;
    /
    

    論理的な方法で入力するために、余分な時間を費やすことをお勧めします。コードの見栄えが良くなり、実行速度も速くなります。



    1. MySQL LOG10()関数–値の常用対数を返します

    2. 行数が固定されているMySQLテーブル?

    3. PHPファイルからAJAXファイルにブール値を返す-[フォロー]ボタン

    4. mysqlで連続したレコードを取得する