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

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

楼主tcagence(tcagence)2006-03-01 19:58:04 在 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、回复次数:7Top

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

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:58:38 得分 0

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

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

elseif=>elsif  
  elsif   可以不用,就if   then   endif多好,清晰.Top

4 楼tcagence(tcagence)回复于 2006-03-01 22:19:28 得分 0

我在执行create   trigger得时候报   创建的触发器带有编译错误  
  在执行   delete   from   pd_gyqxx   where   gyqbh='b'得时候  
  报   触发器   'YXZDH.TRIGGER_PDGYQDLXX'   无效且未通过重新确认  
  不知道怎么才能正确啊Top

5 楼cenlmmx(学海无涯苦作舟)回复于 2006-03-01 22:30:24 得分 0

sql>create   or   replace   trigger   a  
  2   before   insert   or   update   or   delete   on   tableA  
  3   for   each   row  
  4   begin  
  5   if   inserting   then  
  6   insert   into   b   values   (:new.id);  
  7   end   if;  
  8   if   updating   then  
  9   update   b   set   id   =   :new.id   where   id   =   old.id;  
  10   end   if;  
  11   if   deleting   then  
  12   delete   from   b   where   id   =   old.id;  
  13   end   if;  
  14   end;  
  比着改Top

6 楼lzp_lrp(lzp)回复于 2006-03-02 08:34:35 得分 30

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;Top

7 楼lzp_lrp(lzp)回复于 2006-03-02 08:35:05 得分 0

你的日志表有主键吗?可能导致insert不成功Top

相关问题

  • 帮忙写个触发器?
  • 帮忙写个触发器!
  • 帮忙写个触发器!
  • 触发器的编写,帮帮忙啊!
  • oracle触发器的问题?请帮忙!
  • 帮忙设计一个触发器~~
  • 帮忙!这个触发器怎么写?
  • 帮忙改改触发器,谢谢!
  • 高分求触发器,高手帮忙
  • 请教触发器的写法,帮忙写这个最简单的触发器

关键词

  • gyqdlxx
  • gyqbh
  • gyqmc
  • 触发器
  • 齐鲁变压器
  • pd
  • 表
  • 记录
  • 记录下来
  • insert

得分解答快速导航

  • 帖主:tcagence
  • cenlmmx
  • lzp_lrp

相关链接

  • Oracle类图书

广告也精彩

反馈

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