重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
多张表,与同时更新多个字段还是有区别的;
让客户满意是我们工作的目标,不断超越客户的期望值来自于我们对这个行业的热爱。我们立志把好的技术通过有效、简单的方式提供给客户,将通过不懈努力成为客户在信息化领域值得信任、有价值的长期合作伙伴,公司提供的服务项目有:空间域名、网页空间、营销软件、网站建设、邵东网站维护、网站推广。
一种方式:多个表有关联吗,建一个view,更新view时,可以同时更新多个表;
当然,不建view,用内嵌的select sql来代替也可以;
二种方式:利用事务处理,同时提交多个sql语句(update多个表),最后commit,是否是同时更新表呢,当然时间稍有前后;
看具体怎么更新了,一般语法是:
update 表名 set 字段='xxx' where 条件;
commit;
这个所有数据库基本一致,都是这个语法
Oracle没有update from语法
--利用视图 进行多表更新
UPDATE(
select a.姓名 aname,c.姓名 bname
from stuInfo1 a
inner join 表2 b
on a.id=b.id
inner join 表3 c
on b.id=c.id
)
set bname=aname;
数据类型都一样的么,可以考虑用触发器实现 以oracle数据库为例 有两张表test和test01 字段有id name age sal
create or replace trigger TRIG_UPDATE_TEST
after insert or delete or update on test
for each row
declare
l_id varchar2(50);
l_name varchar2(50);
l_age number;
l_sal number;
begin
if(deleting or updating) then
delete test01
where id=:old.id;
if(deleting) then
return;
end if;
end if;
l_id:=:new.id;
l_name:=:new.name;
l_age:=:new.age;
l_sal:=:new.sal;
begin
insert into test01(id,name,age,sal) values(l_id,l_name,l_age,l_sal);
end;
end TRIG_UPDATE_TEST;
再简化点就是在触发器中不声明变量,直接用:new.字段代替
哎,没分啊
请采纳。
明确告诉你“UPDATE”命令本身不能同时修改多表;
教科书上UPDATE命令格式如下:
“update 数据表 set 字段1=值1,字段2=值2 …… 字段n=值n where 条件表达式”
当然可通过很多总方法达到UPDATE多张表的效果,而不是单纯依靠UPDATE命令本身,如:
1、将多个UPDATE用“;”号隔开来执行;
2、通过过程、包实现;
3、通过触发器来实现;
4、通过建立关联;
5、通过外部调用等;
你这叫更新吗,你如果要更新,两个表里都有id=7的,为什么7不就不更新了?
先确认好需求,如果是把7也更新
update name a set (a.大名,a.中名,a.小名)=(select b.大名,b.中名,b.小名 from nam b where a.id=b.id) where a.id in(select id from nam);
如果你只想更新1,2,3行,还不如把1,2,3行都删了,重新插入进去。