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;