我如何获得此触发器以防止前进量不大于0或小于100的插入?谢谢。
DROP TRIGGER CheckAdvance;
CREATE OR REPLACE TRIGGER CheckAdvance
BEFORE INSERT OR UPDATE OF advance ON titles
FOR EACH ROW
WHEN (new.advance<0 OR new.advance>100)
BEGIN
dbms_output.put_line('Advance is Invalid.');
END;
“这是一个阶级问题。”
我在一次会议上作了演讲后,和一位大学讲师讲了话,后者讲授PL / SQL。我的演讲是关于PL / SQL的良好实践的。我的一张幻灯片只是说“不要使用触发器”。这位讲师告诉我,他发现这样的建议很难与课程需求相吻合。他们必须教给学生所有语法,但他承认,他们经常设置任务,要求我们在专业编写软件时不会使用的解决方案。
这是一个问题。正确的方法是使用检查约束,如戈登的答案所示。约束更有效,也很惯用。但是您的老师希望您编写触发器,所以这是您的代码,已更正。
CREATE OR REPLACE TRIGGER CheckAdvance
BEFORE INSERT OR UPDATE OF advance ON titles
FOR EACH ROW
BEGIN
IF (:new.advance < 0
OR :new.advance > 100)
THEN
raise_application_error(-20000
, 'Advance cannot be less than zero or greater than one hundred.');
END IF;
END;
注意事项:
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句