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

Pemicu alternatif untuk dua tabel yang harus saling memperbarui

Menggunakan pemicu di sini hanya menimbulkan masalah.

Selain itu, pilihan untuk menggunakan penjadwal mungkin bukan ide terbaik karena pekerjaan terjadwal hanya dapat melihat data yang dikomit. Jadi, Anda melakukan commit di pemicu yang mengeluarkan logika transaksi dari jendela atau perubahan pada tabel ditunda hingga akhir transaksi.

Anda juga harus:

  1. Gunakan prosedur. Jawaban paling sederhana. Ketika Anda memiliki banyak aplikasi, mereka tidak boleh menjalankan logika DML/bisnis secara langsung, mereka harus selalu melakukannya dengan prosedur sehingga semuanya menjalankan kode yang sama. Melarang DML langsung dengan hibah atau tampilan. Anda mungkin perlu memaksakan penggunaan prosedur melalui INSTEAD OF pemicu pada tampilan (pertimbangkan ini hanya jika Anda tidak dapat mengubah aplikasi).

  2. Mungkin bahkan lebih baik daripada prosedur dalam kasus Anda:gunakan skema yang tidak berisi data duplikat. Anda tidak ingin menyimpan data yang berlebihan:ini membuat pengembangan aplikasi lebih kompleks dari yang dibutuhkan. Dalam hal kinerja, sumber daya, dan energi, cara terbaik untuk memecahkan masalah adalah ketika Anda menyadari bahwa tugas tersebut tidak diperlukan.

    Dari deskripsi model Anda, berikut adalah kolom yang dapat Anda hapus:

    • task.duration_in_days
    • task.end_date
    • task.needs_recomputation
    • subtask.start_date
    • subtugas.end_date


    task tabel hanya akan berisi tanggal mulai, dan setiap subtugas hanya akan menyimpan durasinya. Saat Anda membutuhkan informasi agregat, gunakan gabungan. Anda dapat menggunakan tampilan agar aplikasi dapat mengakses data secara transparan.

  3. Gunakan solusi pemicu mutasi yang menggunakan variabel paket untuk mengidentifikasi baris yang dimodifikasi dengan BEFORE dan AFTER pemicu pernyataan Jelas ini akan melibatkan banyak kode yang akan sulit untuk dikodekan, diuji, dan dipelihara sehingga Anda harus menggunakan opsi (1) dan (2) bila memungkinkan.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Pemicu Oracle SQL pada pembaruan kolom

  2. JDBC ResultSet getDate kehilangan presisi

  3. Apakah mungkin menggunakan pengembalian dalam prosedur tersimpan?

  4. Tabel partisi ganti nama secara otomatis di ORACLE

  5. Oracle:manfaatkan penggunaan dua indeks