oracle 触发器能不能在begin,end之间写update的

liangtiana 2011-01-24 01:11:39
CREATE OR REPLACE TRIGGER "Modify_Base_WaitWork"
after INSERT
ON "Base_WaitWork" REFERENCING NEW AS NEW
FOR EACH ROW
BEGIN
update "Base_WaitWork" a set ("WaitWork_InputerID","WaitWork_TableNo",
"WaitWork_TableCode")=(
select "AppTab_InputerID","AppTab_TableNo","AppTab_TableCode" from
"Base_AppTableInfo"
where "AppTab_ID"=a."WaitWork_FlowTableID")
where "WaitWork_ID"=1;
END "Modify_Base_WaitWork";

...全文
294 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
qibujinglong110 2011-08-17
  • 打赏
  • 举报
回复
很好 阿
liangtiana 2011-01-24
  • 打赏
  • 举报
回复
楼上的真是牛人啊,谢谢啊
  • 打赏
  • 举报
回复

CREATE OR REPLACE TRIGGER "Modify_Base_WaitWork"
before INSERT
ON "Base_WaitWork" REFERENCING :NEW AS NEW
FOR EACH ROW
BEGIN
select "AppTab_InputerID","AppTab_TableNo","AppTab_TableCode"
into :new."WaitWork_InputerID",:new."WaitWork_TableNo",:new."WaitWork_TableCode"
from "Base_AppTableInfo"
where "AppTab_ID"=:new."WaitWork_FlowTableID"
END "Modify_Base_WaitWork";
liangtiana 2011-01-24
  • 打赏
  • 举报
回复
我的意思是问能不能写?new。跟 old可以用where条件加进去的
  • 打赏
  • 举报
回复
[Quote=引用楼主 liangtiana 的回复:]
CREATE OR REPLACE TRIGGER "Modify_Base_WaitWork"
after INSERT
ON "Base_WaitWork" REFERENCING NEW AS NEW
FOR EACH ROW
BEGIN
update "Base_WaitWork" a set ("WaitWork_InputerID","WaitWork_TableNo……
[/Quote]
你这个触发器里的语句既没有用的:new,也没有用的:old
你这样要触发器干嘛...
liangtiana 2011-01-24
  • 打赏
  • 举报
回复
a ,不能直接对本表update啊?
要先select出来再用,赋值语句?
minitoy 2011-01-24
  • 打赏
  • 举报
回复
如果是对本表其他数据进行操作,请使用自治事务
minitoy 2011-01-24
  • 打赏
  • 举报
回复
不能直接对本表update.
如果是要对触发的列作修改,要用before触发器,并使用:new和:old来引用数据,以便进行修改

17,134

社区成员

发帖
与我相关
我的任务
社区描述
Oracle开发相关技术讨论
社区管理员
  • 开发
  • Lucifer三思而后行
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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