सबसे पहले आपको तय करना होगा:
- या तो आप चाहते हैं कि इंसर्ट या अपडेट उस समय विफल हो जाए जब यह अवांछित समय पर किया जा रहा हो
- या आप इंसर्ट या अपडेट को प्रोसेस करना चाहते हैं, लेकिन फिर कॉलम को शून्य पर सेट करना चाहते हैं।
आपके पास दोनों नहीं हो सकते।
यदि आप कॉलम को NULL पर सेट करना चाहते हैं, तो यह पहले . होना चाहिए INSERT/UPDATE ट्रिगर, इसलिए बदले गए कॉलम तालिका में लिखे जाते हैं। (इन्सर्ट/अद्यतन ट्रिगर के बाद फ़ील्ड को कुछ मान पर सेट करने से कोई प्रभाव नहीं पड़ेगा, क्योंकि वे लिखे नहीं गए हैं।)
फिर SET NEW.STAFFNO = NULL;
कोई मान्य PL/SQL नहीं है, जो कि :NEW.STAFFNO := NULL;
होना चाहिए इसके बजाय।
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;