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

Di Oracle, apakah mungkin untuk INSERT atau UPDATE catatan melalui tampilan?

Tampilan di Oracle mungkin dapat diperbarui dalam kondisi tertentu. Ini bisa rumit, dan biasanya tidak disarankan.

Dari Referensi Oracle 10g SQL:

Catatan tentang Tampilan yang Dapat Diperbarui

Tampilan yang dapat diperbarui adalah tampilan yang dapat Anda gunakan untuk menyisipkan, memperbarui, atau menghapus baris tabel dasar. Anda dapat membuat tampilan agar dapat diperbarui secara inheren, atau Anda dapat membuat pemicu BUKAN pada tampilan apa pun untuk membuatnya dapat diperbarui.

Untuk mempelajari apakah dan dengan cara apa kolom dari tampilan yang dapat diperbarui secara inheren dapat dimodifikasi, kueri tampilan kamus data USER_UPDATABLE_COLUMNS. Informasi yang ditampilkan oleh tampilan ini hanya bermakna untuk tampilan yang dapat diperbarui secara inheren. Agar tampilan dapat diperbarui secara inheren, kondisi berikut harus dipenuhi:

  • Setiap kolom dalam tampilan harus dipetakan ke kolom dari satu tabel. Misalnya, jika kolom tampilan dipetakan ke output klausa TABLE (koleksi yang tidak bersarang), maka tampilan tersebut tidak dapat diperbarui secara inheren.
  • Tampilan tidak boleh mengandung konstruksi berikut:
    • Operator yang ditetapkan
    • operator BERBEDA
    • Fungsi agregat atau analitik
    • klausa GROUP BY, ORDER BY, MODEL, CONNECT BY, atau START WITH
    • Ekspresi koleksi dalam daftar SELECT
    • Subkueri dalam daftar PILIH
    • Subkueri yang ditunjuk HANYA BACA
    • Bergabung, dengan beberapa pengecualian, seperti yang didokumentasikan dalam Panduan Administrator Database Oracle

Selain itu, jika tampilan yang dapat diperbarui secara inheren berisi kolom atau ekspresi pseudo, maka Anda tidak dapat memperbarui baris tabel dasar dengan pernyataan UPDATE yang merujuk ke salah satu kolom atau ekspresi ini.

Jika Anda ingin tampilan gabungan dapat diperbarui, maka semua kondisi berikut harus benar:

  • Pernyataan DML hanya boleh memengaruhi satu tabel yang mendasari gabungan.
  • Untuk pernyataan INSERT, tampilan tidak boleh dibuat DENGAN PILIHAN PERIKSA, dan semua kolom tempat nilai dimasukkan harus berasal dari tabel yang diawetkan dengan kunci. Tabel dengan kunci yang diawetkan adalah tabel yang setiap kunci utama atau nilai kunci unik dalam tabel dasar juga unik dalam tampilan gabungan.
  • Untuk pernyataan UPDATE, semua kolom yang diperbarui harus diekstraksi dari tabel yang diawetkan dengan kunci. Jika tampilan dibuat DENGAN PILIHAN PERIKSA, maka gabungkan kolom dan kolom yang diambil dari tabel yang direferensikan lebih dari sekali dalam tampilan harus dilindungi dari UPDATE.
  • Untuk pernyataan DELETE, jika gabungan menghasilkan lebih dari satu tabel yang diawetkan dengan kunci, maka Oracle Database akan menghapus dari tabel pertama yang disebutkan dalam klausa FROM, terlepas apakah tampilan dibuat DENGAN OPSI PERIKSA atau tidak.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Muat lembar data Excel ke database Oracle

  2. Perluas Kontrol Grid EM ke Node Baru

  3. Contoh Fungsi Oracle Pipelined

  4. Kapan atau Mengapa menggunakan SET DEFINE OFF di Oracle Database

  5. bagaimana cara mendeklarasikan %ROWTYPE dari variabel yang merupakan SYS_REFCURSOR yang diketik dengan lemah?