oracle update 多表问题!

Hegemon 2009-08-18 04:31:17
有三个表
表A
fid bm mc
1 001 aaa

表B

fid th sl
1 TK009 20

表C
fid bbh cl
1 99090 89

这三个表都是通过fid关联

现在我想通过一条语句就update三个表中的内容
比如,我要修改表A中的mc字段为bbb,表b中的th字段为TK110,表c中的cl字段为100

这个语句该怎么写?
...全文
293 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
duqiangcise 2009-08-20
  • 打赏
  • 举报
回复
关注中
fxianxian 2009-08-19
  • 打赏
  • 举报
回复
或者stored procedure
winer2008 2009-08-19
  • 打赏
  • 举报
回复
应该不行的吧
inthirties 2009-08-19
  • 打赏
  • 举报
回复
[Quote=引用楼主 hegemon 的回复:]
有三个表
表A
    fid  bm    mc
    1    001    aaa

表B

    fid  th      sl
    1    TK009  20

表C
    fid  bbh      cl
    1    99090    89

这三个表都是通过fid关联

现在我想通过一条语句就update三个表中的内容
比如,我要修改表A中的mc字段为bbb,表b中的th字段为TK110,表c中的cl字段为100

这个语句该怎么写?
[/Quote]

如果三个表上都分别建立了关于fid的外键的话,

是可以通过update view这样的方式来解决的

具体有关update view可以参考
http://blog.csdn.net/inthirties/archive/2009/08/19/4462680.aspx
或者
http://www.inthirties.com/?page_id=151
plafang 2009-08-19
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 tianlesoftware 的回复:]
用触发器,A表有update时则触发B和C的更新..

CREATE OR REPLACE TRIGGER TR_A
AFTER UPDATE
ON STUDENT
FOR EACH ROW
BEGIN
  update arch set id=:NEW.id where id=:OLD.id;
END ;

update student set id=11 where id=1;
[/Quote]



赞同
gaogao110 2009-08-18
  • 打赏
  • 举报
回复
不行
cosio 2009-08-18
  • 打赏
  • 举报
回复
分开写!
Dave 2009-08-18
  • 打赏
  • 举报
回复
用触发器,A表有update时则触发B和C的更新..

CREATE OR REPLACE TRIGGER TR_A
AFTER UPDATE
ON STUDENT
FOR EACH ROW
BEGIN
update arch set id=:NEW.id where id=:OLD.id;
END ;

update student set id=11 where id=1;
Well 2009-08-18
  • 打赏
  • 举报
回复
不行。。分开执行。。。

17,377

社区成员

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

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