oracle表中插入一列

caro_sun1 2011-01-21 03:35:29
想在oracle表中插入一列‘等级’它是由同表中的‘薪金’来决定
我可以这样写吗 总觉得不对 谢谢大家

create or replace trigger A
before insert or update on employee
for each row
begin
case
when ave_sal='0_1000' then update degree='1'
when ave_sal='1001_2000' then update degree='2'
when ave_sal='2001_3000' then update degree='3'
end case;
end;
...全文
546 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
秋雨飘落 2011-02-05
  • 打赏
  • 举报
回复
最简单的,ORACLE什么版本。。。11有个伪列,可以是按。
lxyzxq2008 2011-01-27
  • 打赏
  • 举报
回复
楼主不给分没关系,可是把贴结了吧,0分也行,老挂着也不是个事啊
oracle_dba_11 2011-01-27
  • 打赏
  • 举报
回复

caro_sun1

(caro_sun1)

等 级:
结帖率:0.00%
原来发帖重来不结贴的。。。。。。
心中的彩虹 2011-01-21
  • 打赏
  • 举报
回复
[Quote=引用楼主 caro_sun1 的回复:]
想在oracle表中插入一列‘等级’它是由同表中的‘薪金’来决定
我可以这样写吗 总觉得不对 谢谢大家

create or replace trigger A
before insert or update on employee
for each row
begin
case
when ave_sal='0_1000' then update degree='1'
when ……
[/Quote]





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;



njlywy 2011-01-21
  • 打赏
  • 举报
回复

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;


lijavasy 2011-01-21
  • 打赏
  • 举报
回复
用view来实现可能会好一点
gelyon 2011-01-21
  • 打赏
  • 举报
回复

--上面写错了,修改下:
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;
gelyon 2011-01-21
  • 打赏
  • 举报
回复

--想问下,你插入的新列等级 是否是原表存在的一列??如果是已经存在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;
Phoenix_99 2011-01-21
  • 打赏
  • 举报
回复
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;

17,090

社区成员

发帖
与我相关
我的任务
社区描述
Oracle开发相关技术讨论
社区管理员
  • 开发
  • Lucifer三思而后行
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧