oracle触发器

橄榄丝 2010-11-02 04:43:55
如何将一下MS SQLSERVER 2000的触发器改为oracle10:

create trigger visits_update on dbo.Visits
for update
as
update visits
set V_DayVisits=case when d.V_DayVisits>i.V_DayVisits then d.V_DayVisits else i.V_DayVisits end,
V_TotalVisits=case when d.V_TotalVisits>i.V_TotalVisits then d.V_TotalVisits else i.V_TotalVisits end
from visits a ,inserted i,deleted d
where a.id=i.id and i.id=d.id

GO
...全文
62 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
delphisanding1 2010-11-02
  • 打赏
  • 举报
回复
好的
学习了
心中的彩虹 2010-11-02
  • 打赏
  • 举报
回复
[Quote=引用楼主 gaozhi0 的回复:]
如何将一下MS SQLSERVER 2000的触发器改为oracle10:

SQL code

create trigger visits_update on dbo.Visits
for update
as
update visits
set V_DayVisits=case when d.V_DayVisits>i.V_DayVisits then d.V_DayVisi……
[/Quote]





create or replace trigger tri_tb_up before update on Visits for each row
begin
select
decode(sign(:new.V_DayVisits-:old.V_DayVisits),1,:new.V_DayVisits,-1,:old.V_DayVisits),
decode(sign(:new.V_TotalVisits-:old.V_TotalVisits),1,:new.V_TotalVisits,-1,:old.V_TotalVisits) into :new.V_DayVisits,:new.V_TotalVisits from dual;
end;









  • 打赏
  • 举报
回复

create or replace trigger visits_update
before update on dbo.Visits
for each row
begin
update visits a
set V_DayVisits=(case when :old.V_DayVisits>:new.V_DayVisits
then :old.V_DayVisits else :new.V_DayVisits end),
V_TotalVisits=(case when :old.V_TotalVisits>:new.V_TotalVisits
then :old.V_TotalVisits else :new.V_TotalVisits end)
where a.id=:new.id and :new.id=:old.id;
gelyon 2010-11-02
  • 打赏
  • 举报
回复


create or replace trigger visits_update
before update on dbo.Visits
for each row
begin
if :old.V_DayVisits>:new.V_DayVisits then
:NEW.V_DayVisits:=:old.V_DayVisits;
end if ;
if :OLD.V_TotalVisits>:NEW.V_TotalVisits then
:NEW.V_TotalVisits:=:OLD.V_TotalVisits;
end if ;
end;

17,377

社区成员

发帖
与我相关
我的任务
社区描述
Oracle 基础和管理
社区管理员
  • 基础和管理社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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