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

Pemicu menyetel nilai baris sisipkan ke null

Pertama-tama Anda harus memutuskan:

  • salah satu Anda ingin penyisipan atau pembaruan gagal saat dilakukan pada waktu yang tidak diinginkan
  • atau Anda ingin penyisipan atau pembaruan diproses, tetapi dengan kolom yang disetel ke nol.

Anda tidak dapat memiliki keduanya.

Jika Anda ingin menyetel kolom ke NULL, ini harus menjadi BEFORE pemicu INSERT/UPDATE, sehingga kolom yang diubah ditulis ke tabel. (Dalam pemicu AFTER INSERT/UPDATE, menyetel bidang ke beberapa nilai tidak akan berpengaruh apa pun, karena tidak ditulis.)

Kemudian SET NEW.STAFFNO = NULL; bukan PL/SQL yang valid, itu harus :NEW.STAFFNO := NULL; sebagai gantinya.

CREATE OR REPLACE TRIGGER hi
  BEFORE INSERT OR UPDATE OF class_time ON class
  FOR EACH ROW 
WHEN (new.class_time NOT BETWEEN '09:00' AND '18:00')
BEGIN 
  :new.staffno := null; 
  :new.class_day := null; 
  :new.class_type := null; 
  :new.roomnum := null;
END; 



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Oracle menemukan kendala

  2. DBMS_LOB.SUBSTR() melempar buffer string karakter kesalahan terlalu kecil

  3. Oracle DataReader mengembalikan 1 baris tetapi metode Baca mengembalikan false

  4. Bagaimana cara mengekspor menggunakan DATA_PUMP ke ember S3?

  5. Saat kesalahan melanjutkan jenis penanganan kesalahan berikutnya di PL/SQL oracle