如何获得此触发器以防止前进不大于0或小于100的插入?感谢。
<?php $args = array(
'posts_per_page' => 5,
'offset' => 0,
'category' => '',
'category_name' => '',
'orderby' => 'date',
'order' => 'DESC',
'include' => '',
'exclude' => '',
'meta_key' => '',
'meta_value' => '',
'post_type' => 'post',
'post_mime_type' => '',
'post_parent' => '',
'author' => '',
'author_name' => '',
'post_status' => 'publish',
'suppress_filters' => true
);
$posts_array = get_posts( $args ); ?>
答案 0 :(得分:7)
你不应该使用触发器。 Oracle(以及一般的SQL)支持检查约束:
alter table titles
add constraint chk_titles_advance check (advance > 0 and advance <= 100);
答案 1 :(得分:7)
&#34;这是一个课堂问题。&#34;
我在一次会议上发表演讲后,与一位教授PL / SQL的大学讲师聊天。我的演讲是关于PL / SQL的良好实践;我的一张幻灯片只是简单地说'不要使用触发器&#34;。讲师告诉我,他发现这些建议难以与课程的需求相协调。他们必须教给学生所有的语法,但他承认,他们经常设定任务,要求在专业编写软件时不会使用解决方案。
这是一个问题。正确的方法是使用检查约束,Gordon's answer shows。约束更有效率,也是惯用语。但是你的老师要你写一个触发器,所以这是你的代码,更正了。
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;
注意事项: