第一次写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;
逻辑:如果tc_ggm_file插入数据,则tc_gge_file,复制最大版本号的数据到新版本上,版本号新旧 都是通过tc_ggm_file 获取
就是当tc_ggm_file (版本号管理表)插入一条记录(相当于版本号升级)后tc_gge_file 复制原来的数据到新的版本上,并将复制的数据旧版本号值替换成新版本号
麻烦懂触发器的各位给看一下
两个表的表结构给一下
我猜,在你的“tc_ggm_file”表里,没有“tc_gge01”这个字段,所以 “:new.tc_gge01”这个引用是错误的。
建议换个工具,使用plsql developer,在程序窗口编译时,下面会显示行代码有什么错误
然后, “:new”的中间不能有空格
最后,得到报错信息,的确就是我前面说的,触发表里没有tc_gge01这个字段
你怎么insert的表和select的表是同一个表呢
自己的数据查出来插入自己?
然后最前面还用了个FOR each ROW,就是每条数据都这样搞一下
这逻辑够乱的