Oracle
 sql >> Teknologi Basis Data >  >> RDS >> Oracle

(PLSQL) Apa ekspresi paling sederhana untuk menguji nilai yang diubah dalam pemicu pembaruan Oracle?

Semua metode yang lebih pendek ini memiliki beberapa kelemahan. Mereka lambat, tidak intuitif, berpotensi buggy (hindari nilai ajaib bila memungkinkan), dan lebih eksklusif daripada kondisi normal seperti AND/OR/IS NULL/IS NOT NULL.

NVL, DECODE, COALESCE, dll., bisa lebih mahal dari yang Anda kira.

Saya telah melihat ini berkali-kali dalam beberapa konteks yang berbeda, berikut adalah contoh sederhananya:

--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;
/

Saya sarankan Anda menghabiskan waktu ekstra untuk mengetiknya dengan cara yang logis. Kode Anda akan terlihat lebih baik dan berjalan lebih cepat.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Cara memperbarui kolom dengan gabungan dua kolom lain dalam tabel yang sama

  2. Oracle/SQL:Mengapa kueri SELECT * FROM record WHERE rownum>=5 AND rownum <=10 - mengembalikan nol baris

  3. Oracle 11g Reports and Forms Properties Pembaruan massal

  4. kueri oracle lambat dengan REGEXP_SUBSTR(AGGREGATOR,'[^;]+',1,LEVEL)

  5. Prosedur Tersimpan Java Vs Prosedur Tersimpan PL/SQL