触发器曾经是编译通过,但现在提示“触发器中不能包含LONG型字段”,但确实没有定义和指向这种类型的字段

xiaoshitou 2004-09-17 12:36:50
触发器中不能包含LONG型
可能一句话说不清楚,虽然修改的表中含有LONGROW型字段,但在触发器里没有定义和指向这些字段,应该是可以的。但现在却提示触发器中不能包含LONG型;
下面是触发器:CREATE OR REPLACE TRIGGER DLYX.T_Z_YWX_UPDATE_DQGW
BEFORE UPDATE OF ywxlb,PGLB,SFKQU,SFPG,YWXMC
ON DLYX.Z_YWX
REFERENCING OLD AS OLD NEW AS NEW FOR EACH ROW
--DECLARE i_NewYwxLb VARCHAR2(4);
BEGIN
i_NewYwxLb:= :new.ywxlb;
UPDATE Z_DQGW
SET SFPG = :new.SFPG,
PGLB = :new.PGLB,
SFKQU = :new.SFKQU,
DQYWXMC = :new.YWXMC,
KHTS = zt_GetKhTs(i_NewYwxLb, FUN_YK_QdLcKhLb(cdbh))
WHERE DQYWX = :new.YWXDM;
END T_Z_YWX_UPDATE_DQGW;
其中:表Z_YWX中确有一个字段为LONGROW型,但这里并没有用到;其他函授和表也没有对这个LONGROW型的字段进行操作;
另外这个触发器曾经是编译通过的,并且也修改过也是通过的,但现在突然不能用,重新编译和重建都有提示“触发器中不能包含LONG型字段”
...全文
114 4 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
xiaoshitou 2004-09-24
  • 打赏
  • 举报
回复
怎么不能将帖子提前,大家帮忙啊!!!!!!
北极海hein 2004-09-17
  • 打赏
  • 举报
回复
同意bzszp(www.bzszp.533.net)
如果你的oracle 是9i最好不要用long数据类型了.
bzszp 2004-09-17
  • 打赏
  • 举报
回复
原因可能是 触发器中:new,:old包含修改行的整行数据
这个地方有可能是long row类型的数据不能存放在这两个对象里面。
xiaoshitou 2004-09-17
  • 打赏
  • 举报
回复
但以前这个触发器是好的,也没有改过语句。这是个比较关键的表,修改表结构影响比较大,因此不能贸然修改表结构。
我的怀疑也是是否要整行修改数据,但我想既然以前是正常的,是否是数据库有什么参数可以设置触发器是否是整行检测还是只检测 ywxlb,PGLB,SFKQU,SFPG,YWXMC 指定的这些列。因为书上没有介绍,所以求助大家!!!急切盼望~~~~~~

17,382

社区成员

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

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