怎么用SQL语句同步两个表中的字段值?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了怎么用SQL语句同步两个表中的字段值?相关的知识,希望对你有一定的参考价值。

例:A表和B表都有字段C,让B表中的字段C和A表中的一样
是用update还是insert?
我用 uadate B set b.c=A.C 提示无法绑定由多个部分组成的标识符'A.C'
用 insert into B(C) select C from A 提示不能将值NULL插入列'code'。我把B表中C字段属性改成允许空值,还是不行。

SQL语句同步两个表中的字段值需要用触发器来实现。
如有两张表——A表和B表,创建触发器使当A表插入数据后B表也同步插入数据。其中B表插入数据的字段需要同A表中的字段相对应。
CREATE TRIGGER 触发器名称
ON A表
AFTER INSERT
AS BEGIN INSERT INTO
B表(B表字段1,B表字段2,B表字段3)
SELECT A表字段1,A表字段2,A表字段3
FROM INSERTED
END
参考技术A 需要将A表和B表通过某个或多个字段关联起来,再操作 参考技术B 首先你想在什么情况下让两个表的字段同步,是在更新的时候吗?追问

本来B中没有C字段,现在加入了C,要让B中的C字段和A中的C字段一样,相当于把值全部复制过来。

追答

表B中有数据吗?

追问

有的,但字段C里还没有数据

追答

表B跟表A之间有没有建立主外键关系,两个表有没有标识列。

参考技术C Update b set b.c=a.c from b b ,a a where a.id=b.id追问

都说了会提示 无法绑定由多个部分组成的标识符

追答

我写的和你写的不一样吧。

追问

哦,但提示是一样的

本回答被提问者采纳
参考技术D 加标识列,追问

标识列?不懂啊

追答

我要下班了,明天帮你啊

update 更新多个表 SQL

SQL中,有2个表A1、A2,A1表中有字段D1(主键,与表A2中主键E1关联)、D2,A2中有字段E1、E2,请问怎么用 一个UPDATE同时将A1、A2表中的D2、E2字段同时更新成1(默认值是0),请认真看完题再回答,谢谢

参考技术A update 好像是不能同时更新两个表的

楼主想同时更新这两个表而采用单个更新是因为2个表的约束关系
其实还有一个办法
就是先把两个表的约束关系都停用了
然后用2条语句将2个表分别更新,更新完了以后再启用两个表的约束关系就可以了
参考技术B update 语句无法 同时 更新两个表;

可以 对2个表update 后

再统一提交追问

就是最后Commit? 没有同时更新么? 那组合情况怎么办? 我更新第一个表,但是更新第二个表需要第一个表修改字段以前的值组合查出来才能决定更新哪条记录的,我看网上有很多update同时更新多条记录,但都是用别的表更新一个表,并不是真正的同时更新多个表

追答

没有同时更新多个表的语法。

可以用触发器,在update一个表的时候,同时 update另一个表。

本回答被提问者采纳
参考技术C update A1 a,A2 b set a.D2=1,b.E2=1 where .....
update 和select 都可以同时操作多个表,为了方便可以在表后面加比如 a ,相当于变量一样。
mysql,sqlserver,oracle有效,其他数据库没试过追问

你确定实验过?我实验怎么报错,而且help中说明了update后不能跟2个表的,什么情况?

追答

你的什么数据库?

追问

SQL2008

追答

真不好意思sqlserver还真不行,update 多表只在mysql上试过,可以。sqlserver支持select多表,我还以为update也支持。

追问

哦~没关系,谢谢你了

参考技术D 一个UPDATE不可能做到更新两个表

可以将一个表的内容先提取到临时表,先更新此表,再用临时表内容作条件更新另一个表
第5个回答  2013-07-23 用级联更新。

以上是关于怎么用SQL语句同步两个表中的字段值?的主要内容,如果未能解决你的问题,请参考以下文章

SQL语句怎么对单个字段去重,并且要显示所有列

MYSQL怎么将表中的A字段值更新B字段值?求sql语句

sqlserver用编程语句怎么把两个表格横向合成一个

两个表匹配,匹配上把一张表的值复制到另一张表的sql语句怎么写

怎么用SQL语句添加新字段并设置默认值

SQL语句把同一个表中的a字段中的数据复制到另一个字段b中