各位大侠帮帮忙
基于表“员工数据表”创建AFTER INSERT触发器EmployeeSalary,将插入员工的工资额限制在5000以内。
和基于表“员工数据表”创建BEFORE INSERT触发器EmployeeSalary,将插入员工的工资额限制在5000以内。
基于表“员工数据表”创建AFTER INSERT触发器EmployeeSalary,将插入员工的工资额限制在5000以内。
和基于表“员工数据表”创建BEFORE INSERT触发器EmployeeSalary,将插入员工的工资额限制在5000以内。
解决方案 »
- 数据库优化指的是什么东东?
- 请帮助解答:数据库操作的执行过程,DBMS-OS-内存-硬盘
- Oracle Sql Developer 调试程序报错,大家帮帮忙!!
- 在11万条数据的表中SELECT数据,如何优化
- 10g的em 打不开?
- Oracle服务器和Oracle客户端是什么关系?
- utl_file.fopen('C:/','aaa.txt','w');提示路径无效,这是为什么?
- 想破了头,请教如何将已经存在oracle中的图片用SQL语句提取出来?select语句送入oracle后,怎样调记录集类来显示图片?最好有代码
- 我刚安装的ORACLE8,单机使用,可是在SQLPLUS中连接system/manager可以,可是加上主机字符串就无法连接,怎么回事?如何处理
- oem登录异常~~!!
- Oracle 10g 异常
- ********求一存储过程或函数将用户传的语句转换为ORACLE语句***********
比如:insert into Table values(xx,xxx) select xx,xxx from TableB where salary < 50000
before insert on x
for each row
declare
begin
if :new.sal > 1000 then
raise_application_error(-20001, 'salary cannot exceed 1000');
end if;
end;
after insert on x
for each row
declare
begin
if :new.sal > 1000 then
raise_application_error(-20001, 'salary cannot exceed 1000');
end if;
end;
alter insert on 员工数据表
for each row
declare
begin
if :new.names>5000 then
raise_replaction_err(-2003,"工资超过5000");
else
否则对EmployeeSalary进行更新或插入操作....
end if
end
create or replace trigger tg_rl099
after insert or delete on RL_099_YXFS2
for each row
begin
IF Inserting then
insert into RL_099_zyzb(rl_id) values(:New.RL_ID);
commit;
DBMS_output.put_line('插入的汽机副值日志编号为:'||:new.RL_ID);
End If;
If Deleting then
delete from rl_099_zyzb where rl_id = :old.rl_id;
DBMS_output.put_line('删除的汽机副值日志编号为:'||:old.RL_ID);
End If;
Exception
When Others Then
DBMS_output.put_line('出现了意外错误!!');
end;
before insert or update
of salary--这是你的工资字段
on 员工数据表
referencing old as old_value
new as new_value
for each row
when (new_value.salary>5000 ) --当salary字段的值超过5000时触发
begin
raise_replaction_err(-2003,"工资超过5000"); end;
create trigger TR_EmployeeSalary
before insert or update
of salary--这是你的工资字段
on 员工数据表
referencing old as old_value
new as new_value
for each row
when (new_value.salary>5000 ) --当salary字段的值超过5000时触发
begin
raise_replaction_err(-2003,'工资超过5000'); end;
before insert or update
of salary--这是你的工资字段
on 员工数据表
referencing old as old_value
new as new_value
for each row
when (new_value.salary>5000 ) --当salary字段的值超过5000时触发
begin
raise_replaction_err(-2003,'工资超过5000'); end; ---这个不错。
2.如果emp_salary+:new.add_salary<=5000,执行此触发器中的工资修改语句;
3.如果emp_salary+:new.add_salary>5000,不执行此触发器中的工资修改语句,并作相应处理。
create or replace trigger employeesalary
before insert on 员工数据表
when (new.工资<0 or new.工资>5000) for each row
begin
RAISE_APPLICATION_ERROR(-20001,'工资超出范围,操作取消!');
end;
和
create or replace trigger employeesalary
after insert on 员工数据表
when (new.工资<0 or new.工资>5000) for each row
begin
RAISE_APPLICATION_ERROR(-20001,'工资超出范围,操作取消!');
end;
都创建成功,有啥区别没。
before表示:在表的一行更改前将要更改的那一刻触发执行触发器.
是不是AFTER即使工资超出范围也先插入表中了
轻举一个简单易懂的BEFORE,和AFTER触发器