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

Oracle:pemicu kenaikan otomatis.

Oke, saya pikir saya mengerti apa yang terjadi. Jawaban atas pertanyaan Anda adalah sangat besar ya . Akan ada dampak besar jika Anda menonaktifkan pemicu ini.

Alasan pemicu ini tampaknya ada adalah untuk menghadapi situasi di mana nilai kunci utama tidak disediakan pada sisipan ke dalam tabel Anda. Jika ini terjadi di mana saja dalam kode Anda, menghapus pemicu akan merusak sisipan tersebut.

Anda harus melakukan dua hal.

  1. Perbaiki pemicunya, itu jelas rusak; perbaiki:

    CREATE OR REPLACE TRIGGER  BI_PRIVILEGE
      before insert on PRIVILEGE              
      for each row  
    begin   
      if :NEW.PRIVILEGE_ID is null then 
        select PRIVILEGE_SEQ.nextval into :NEW.PRIVILEGE_ID from dual; 
      end if; 
    end; 
    

    Jika Anda menggunakan Oracle 11G atau lebih tinggi, Anda dapat menggunakan ini sebagai gantinya:

      if :NEW.PRIVILEGE_ID is null then 
        :NEW.PRIVILEGE_ID := PRIVILEGE_SEQ.nextval; 
      end if; 
    
  2. Cari tahu apakah ini benar-benar terjadi. Jika Anda memasukkan catatan tanpa kunci utama, Anda perlu mencari tahu mengapa ini terjadi dan apakah perilakunya benar. Jika Anda terjebak dengan pelatuk, jika tidak perbaiki itu. Jika Anda tidak pernah memasukkan catatan tanpa kunci utama maka Anda dapat menonaktifkan pemicunya.

    Cara tercepat untuk mengetahuinya mungkin dengan menonaktifkan pemicunya, tetapi itu akan merusak sisipan Anda. Jika ini adalah basis data produksi, Anda dapat mengetahui apakah itu layak. Saya pribadi tidak akan melakukannya.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Pisahkan kolom CLOB berdasarkan baris baru - Oracle SQL

  2. Oracle - perbarui bergabung - tabel tanpa kunci yang diawetkan

  3. JSON_VALUE() Fungsi di Oracle

  4. Bagaimana mengintegrasikan Oracle dan Kafka

  5. Oracle:bagaimana cara UPSERT (memperbarui atau memasukkan ke dalam tabel?)