17,090
社区成员
发帖
与我相关
我的任务
分享
create or replace trigger A before insert or update on employee
for each row
begin
case
when :new.ave_sal between 0 and 1000 then :new.degree='1'
when :new.ave_sal between 1001 and 2000 then :new.degree='2'
when :new.ave_sal between 2001 and 3000 then :new.degree='3'
end case;
end;
create or replace trigger A
before insert or update on employee
for each row
begin
if :new.ave_sal='0_1000' then
:new.degree='1';
elsif :new.ave_sal='1001_2000' then
:new.degree='2';
elsif :new.ave_sal='2001_3000' then
:new.degree='3';
end if;
end;
--上面写错了,修改下:
create or replace trigger A
before insert or update on employee
for each row
begin
if :new.ave_sal='0_1000' then
:new.degree='1';
elsif :new.ave_sal='1001_2000' then
:new.degree='2';
elsif :new.ave_sal='2001_3000' then
:new.degree='3';
end if;
end;
--想问下,你插入的新列等级 是否是原表存在的一列??如果是已经存在employee中的
--而你是用触发器去做的,只需要根据new值来判断,改变new.degree就是了
create or replace trigger A
before insert or update on employee
for each row
begin
if ave_sal='0_1000' then
:new.degree='1';
elsif ave_sal='1001_2000' then
:new.degree='2';
elsif ave_sal='2001_3000' then
:new.degree='3';
end if;
end;
create or replace trigger A
before insert or update on employees
for each row
begin
update oracle set degree =(
case
when ave_sal='0_1000' then '1'
when ave_sal='1001_2000' then '2'
when ave_sal='2001_3000' then '3'
end);
end;