一、触发器程序
1 向student表插入数据时如果年龄大于100或者小于0则报错
create or replace trigger student_age_trigger
before insert or update of age on student for each row
declare
uage number;
begin
if :NEW.age > 100 then
RAISE_APPLICATION_ERROR(-20002, '年龄超过100');
elsif :NEW.age < 0 then
RAISE_APPLICATION_ERROR(-20003, '年龄小于0');
end if;
end;
/
--测试
insert into student values('2', '王维', 101);
insert into student values('2', '王维', -1);
insert into student values('2', '王维', 1);
--结果
SQL> insert into student values('2', '王维', 101);
insert into student values('2', '王维', 101)
*
第 1 行出现错误:
ORA-20002: 年龄超过100
ORA-06512: 在 "HR.STUDENT_AGE_TRIGGER", line 5
ORA-04088: 触发器 'HR.STUDENT_AGE_TRIGGER' 执行过程中出错
SQL> insert into student values('2', '王维', -1);
insert into student values('2', '王维', -1)
*
第 1 行出现错误:
ORA-20003: 年龄小于0
ORA-06512: 在 "HR.STUDENT_AGE_TRIGGER", line 7
ORA-04088: 触发器 'HR.STUDENT_AGE_TRIGGER' 执行过程中出错
SQL> insert into student values('2', '王维', 1);
已创建 1 行。
SQL>