CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
可用分押宝游戏火热进行中... 专题改版:Java Web 专题
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  Oracle >  开发

帮个忙,帮我看看这段触发器代码!!

楼主tcagence(tcagence)2006-03-01 19:52:28 在 Oracle / 开发 提问

有个表公用区电量信息pd_gyqdlxx(gyqbh,gyqmc),想写个触发器,当表中增加(insert),删除(delete),更新(update)时,能记录下来,记到表pd_gyqdlxx_temp表中,pd_gyqdlxx_temp(oldgyqbh,gyqbh,gyqmc,action)  
  1.如果在pd_gyqdlxx表增加一条记录('0001','齐鲁变压器'),则把增加得gyqbh,gyqmc记录下来,写到temp表中,形成('','0001','齐鲁变压器','insert')  
  2.如果在pd_gyqdlxx表更新一条记录('0001','齐鲁变压器')改为('0001','难坛变压器'),则把gyqbh,gyqmc记录下来,写到temp表中,形成('0001','0001','难坛变压器','update')  
  3.如果在pd_gyqdlxx表删除一条记录('0001','齐鲁变压器'),则把gyqbh,gyqmc记录下来,写到temp表中,形成('0001','','','update')  
  不知道触发器怎么写,我写了这么一个,不过没通过,编译就有错  
   
  create     or   replace   trigger     trigger_pdgyqdlxx  
    after     insert       or       update       or       delete          
          on     pd_gyqdlxx  
  referencing   old   as   old_value    
                          new   as   new_value  
          for   each   row  
                  begin  
    if   inserting   then  
          insert   into   pd_gyqdlxx_tmp(oldgyqbh,gyqbh,gyqmc,action)   values('',new_value.gyqbh,new_value.gyqmc,'insert')  
    elseif   updating   then  
          insert   into   pd_gyqdlxx_tmp(oldgyqbh,gyqbh,gyqmc,action)   values(old_value.gyqbh,new_value.gyqbh,new_value.gyqmc,'update')  
    elseif   deleting   then  
                            insert   into   pd_gyqdlxx_tmp(oldgyqbh,gyqbh,gyqmc,action)   values(old_value.gyqbh,'','','delete')        
                      end   if;  
                  end  
  问题点数:100、回复次数:6Top

1 楼cenlmmx(学海无涯苦作舟)回复于 2006-03-01 21:43:31 得分 0

create   or   replace   trigger   trigger_pdgyqdlxx  
  after   insert   or   update   or   delete   on   pd_gyqdlxx  
  for   each   row  
  begin  
  if   inserting   then  
  insert   into   pd_gyqdlxx_tmp(oldgyqbh,gyqbh,gyqmc,action)   values('',:new.gyqbh,:new.gyqmc,'insert')  
  elseif   updating   then  
  insert   into   pd_gyqdlxx_tmp(oldgyqbh,gyqbh,gyqmc,action)   values(:old.gyqbh,:new.gyqbh,:new.gyqmc,'update')  
  elseif   deleting   then  
  insert   into   pd_gyqdlxx_tmp(oldgyqbh,gyqbh,gyqmc,action)   values(:old.gyqbh,'','','delete')  
  end   if;  
  end;Top

2 楼tcagence(tcagence)回复于 2006-03-01 21:59:38 得分 0

不行啊,sql   plus报错,警告:   创建的触发器带有编译错误  
  Top

3 楼cenlmmx(学海无涯苦作舟)回复于 2006-03-01 22:04:46 得分 0

哦,elseif改为elsifTop

4 楼lzp_lrp(lzp)回复于 2006-03-02 08:36:00 得分 0

create   or   replace   trigger   trigger_pdgyqdlxx  
  after   insert   or   update   or   delete   on   pd_gyqdlxx  
  for   each   row  
  begin  
  if   inserting   then  
  insert   into   pd_gyqdlxx_tmp(oldgyqbh,gyqbh,gyqmc,action)   values('',:new.gyqbh,:new.gyqmc,'insert')  
  elsif   updating   then  
  insert   into   pd_gyqdlxx_tmp(oldgyqbh,gyqbh,gyqmc,action)   values(:old.gyqbh,:new.gyqbh,:new.gyqmc,'update')  
  elsif   deleting   then  
  insert   into   pd_gyqdlxx_tmp(oldgyqbh,gyqbh,gyqmc,action)   values(:old.gyqbh,'','','delete')  
  end   if;  
  end;  
  你的日志表有主键吗?可能导致insert不成功Top

5 楼boydgmx(授人以鱼不如授人以渔(baidu&google))回复于 2006-03-02 08:37:32 得分 0

把   elseif   改为   elsifTop

6 楼tcagence(tcagence)回复于 2006-03-02 11:05:01 得分 0

我作成功了  
  create   or   replace   trigger   trigger_pdgyqdlxx  
  after   insert   or   update   or   delete   on   pd_gyqdlxx  
  for   each   row  
  begin  
  if   inserting   then  
  insert   into   pd_gyqdlxx_tmp(oldgyqbh,gyqbh,gyqmc,action)   values('',:new.gyqbh,:new.gyqmc,'insert');  
  elsif   updating   then  
  insert   into   pd_gyqdlxx_tmp(oldgyqbh,gyqbh,gyqmc,action)   values(:old.gyqbh,:new.gyqbh,:new.gyqmc,'update');  
  elsif   deleting   then  
  insert   into   pd_gyqdlxx_tmp(oldgyqbh,gyqbh,gyqmc,action)   values(:old.gyqbh,'','','delete');  
  end   if;  
  end;  
   
  在insert语句中漏了分号!Top

相关问题

  • 帮个忙,帮我看看这段触发器代码!!
  • 帮忙写个触发器?
  • 帮忙写个触发器!
  • 帮忙写个触发器!
  • 触发器的编写,帮帮忙啊!
  • oracle触发器的问题?请帮忙!
  • 帮忙设计一个触发器~~
  • 帮忙!这个触发器怎么写?
  • 帮忙改改触发器,谢谢!
  • 高分求触发器,高手帮忙

关键词

  • gyqbh
  • gyqmc
  • gyqdlxx
  • 触发器
  • oldgyqbh
  • pd
  • 齐鲁变压器
  • theninsert
  • 表
  • elsif

得分解答快速导航

  • 帖主:tcagence

相关链接

  • Oracle类图书

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
世纪乐知(北京)网络技术有限公司 版权所有, 京 ICP 证 020026 号
北京创新乐知广告有限公司 提供技术支持
Copyright © 2000-2007, CSDN.NET, All Rights Reserved
GongshangLogo