用Oracle 9i创建一个触发器tr_emp_sal,当进行update操作时,员工的工资只能涨不能降,不允许删除员工记录,代码如下:
create or replace trigger sys.tr_emp_sal before update or delete on scott.emp
for each row
begin
emp.sal:=emp.sal+1;
DBMS_OUTPUT.PUT_LINE('姓名:'||emp.ename);
DBMS_OUTPUT.PUT_LINE('工资:'||emp.sal);
end tr_emp_sal;请问各位哪里出错了,请帮我看看?
create or replace trigger sys.tr_emp_sal before update or delete on scott.emp
for each row
begin
emp.sal:=emp.sal+1;
DBMS_OUTPUT.PUT_LINE('姓名:'||emp.ename);
DBMS_OUTPUT.PUT_LINE('工资:'||emp.sal);
end tr_emp_sal;请问各位哪里出错了,请帮我看看?
不能这么写,参考如下...
UPDATE EMP SET emp.sal=emp.sal+1 WHERE ....
create or replace trigger tri_emp
before insert
on emp
begin
if(to_char(sysdate,'DAY') in ('星期三','星期日'))
or (to_char(sysdate,'HH24') not between 8 and 18) then
raise_application_error(-20001,'不是上班时间');
end if;
end;
for each row
begin
:new.emp.sal:=:old.emp.sal+1;
DBMS_OUTPUT.PUT_LINE('姓名:'||emp.ename);
DBMS_OUTPUT.PUT_LINE('工资:'||emp.sal);
end tr_emp_sal;