αυтυми 2022-09-05 15:03 采纳率: 100%
浏览 77
已结题

ORACLE触发器,报错:创建成功编译错误

第一次写oracle触发器,根据网上说的格式写完了运行,报错,创建成功编译错误

CREATE
OR REPLACE TRIGGER fr_cs before INSERT ON tc_ggm_file FOR each ROW

BEGIN
        INSERT INTO tc_gge_file ( tc_gge01, tc_gge02, tc_gge03, tc_gge04, tc_gge05, tc_gge06, tc_gge07 )
 SELECT
        tc_gge01,
        tc_gge02,
        tc_gge03,
        tc_gge04,
        tc_gge05,
        tc_gge06,
        : new.tc_ggm01 ---拿触发器表的字段填入tc_gge07
    FROM
        tc_gge_file 
    WHERE
                 tc_gge01 :=: new.tc_gge01 
        AND tc_gge07 :=: new.tc_gge07;
END;


运行结果及报错内容

img

试着写了几种都报错了,没得办法了,想向社区问问

逻辑:如果tc_ggm_file插入数据,则tc_gge_file,复制最大版本号的数据到新版本上,版本号新旧 都是通过tc_ggm_file 获取
就是当tc_ggm_file (版本号管理表)插入一条记录(相当于版本号升级)后tc_gge_file 复制原来的数据到新的版本上,并将复制的数据旧版本号值替换成新版本号

麻烦懂触发器的各位给看一下

  • 写回答

2条回答 默认 最新

  • DarkAthena ORACLE应用及数据库设计方案咨询师 2022-09-05 16:13
    关注

    两个表的表结构给一下
    我猜,在你的“tc_ggm_file”表里,没有“tc_gge01”这个字段,所以 “:new.tc_gge01”这个引用是错误的。
    建议换个工具,使用plsql developer,在程序窗口编译时,下面会显示行代码有什么错误


    img


    where条件里咋出现了个赋值?


    然后, “:new”的中间不能有空格


    最后,得到报错信息,的确就是我前面说的,触发表里没有tc_gge01这个字段

    img

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 9月13日
  • 已采纳回答 9月5日
  • 修改了问题 9月5日
  • 赞助了问题酬金10元 9月5日
  • 展开全部

悬赏问题

  • ¥15 写一个bat,根据文件前缀创建文件夹,并将文件移动到对应前缀名称的文件夹内
  • ¥15 数据库原理及应用上机练习题
  • ¥30 征集Python提取PDF文字属性的代码
  • ¥15 如何联系真正的开发者而非公司
  • ¥15 有偿求苍穹外卖环境配置
  • ¥15 代码在keil5里变成了这样怎么办啊,文件图像也变了,
  • ¥20 Ue4.26打包win64bit报错,如何解决?(语言-c++)
  • ¥15 clousx6整点报时指令怎么写
  • ¥30 远程帮我安装软件及库文件
  • ¥15 关于#自动化#的问题:如何通过电脑控制多相机同步拍照或摄影(相机或者摄影模组数量大于60),并将所有采集的照片或视频以一定编码规则存放至规定电脑文件夹内