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

Tampilan Oracle tidak dapat diperbarui, saran tentang Alih-alih pemicu

Pemicu BUKAN akan terlihat seperti ini (saya berasumsi Anda memiliki kolom kunci utama id ):

SQL> CREATE OR REPLACE TRIGGER trg_staff_data_cpt_instead_upd
  2     INSTEAD OF UPDATE ON staff_data_compat
  3     FOR EACH ROW
  4  BEGIN
  5     UPDATE staff_data_compat_t
  6        SET knownas_surname = :new.surname,
  7            first_name = :new.first_name,
  8            middle_name = :new.mid_name
  9      WHERE id = :new.id
 10  END;
 11  /

Trigger created

Perhatikan bahwa beberapa kolom mungkin sebenarnya dapat diperbarui dalam tampilan aslinya. Kueri all_updatable_columns lihat (sebelum membuat pemicu) untuk mengetahui:

SQL> CREATE TABLE staff_data_compat_t AS
  2  SELECT object_name knownas_surname,
  3         owner surname,
  4         object_type first_name,
  5         subobject_name middle_name
  6    FROM all_objects;

Table created

SQL> CREATE OR REPLACE VIEW staff_data_compat AS
  2  SELECT
  3    NVL(knownas_surname,surname) as surname,
  4    first_name,
  5    middle_name mid_name,
  6    NULL as ni,
  7    NULL as home_tel_no
  8  FROM staff_data_compat_t;

Tampilan dibuat

SQL> SELECT * FROM all_updatable_columns WHERE table_name = 'STAFF_DATA_COMPAT';

OWNER  TABLE_NAME         COLUMN_NAME  UPDATABLE INSERTABLE DELETABLE
------ ------------------ ------------ --------- ---------- ---------
VNZ    STAFF_DATA_COMPAT  SURNAME      NO        NO         NO
VNZ    STAFF_DATA_COMPAT  FIRST_NAME   YES       YES        YES
VNZ    STAFF_DATA_COMPAT  MID_NAME     YES       YES        YES
VNZ    STAFF_DATA_COMPAT  NI           NO        NO         NO
VNZ    STAFF_DATA_COMPAT  HOME_TEL_NO  NO        NO         NO

Jika Anda hanya perlu menyisipkan/memperbarui kolom ini, Anda tidak memerlukan pemicu BUKAN.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Menghubungkan ke database Oracle menggunakan SQLAlchemy

  2. Bagaimana cara membuat tampilan menggunakan tindakan dinamis di APEX oracle?

  3. Bagaimana cara mengatur ulang urutan di Oracle?

  4. Oracle SQL Menggabungkan Beberapa Baris Dengan ID Yang Sama Tetapi Pengidentifikasi Rusak

  5. Kolom tidak diizinkan di sini Oracle SQL pada banyak kolom