sql server2008,同一数据库里的两张不同的表怎么实现同步?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了sql server2008,同一数据库里的两张不同的表怎么实现同步?相关的知识,希望对你有一定的参考价值。
例如我数据库里有表aaa和表bbb
aaa里有3个字段 aid a1 a2
bbb里有5个字段 bid b1 b2 b3 b4
aid和bid分别是表aaa和表bbb的主键,不需同步。而是吧aaa中的a1字段的数据同步到b1,把a2字段中的数据同步到b1。
也就是说aaa表里有数据变动时(包括更新列、插入列),bbb表里也能有相应的更新列和插入列。
请高手指教,先谢了!!
1楼谢了,我也知道要用触发器,但是怎么用呢?可以提示一下吗?有代码就更好了
2楼大哥不好意思,应该是“把aaa中的a1字段的数据同步到b1,把a2字段中的数据同步到b2”,bbb里面的其它字段都为空即可
create trigger up_table on aaa
for update
as
if update(a1)or update(a2)
begin
update t2
set b1=t1.a1,b2=t1.a2
from inserted t1,
bbb t2
where t1.aid=t2.bid
end
插入
create trigger in_table on aaa
for insert
as
insert into bbb(b1,b2)
select a1,a2 from inserted
end追问
插入记录触发器我是这样写的:
create trigger in_table on aaa
for insert
as
begin
insert into bbb(b1,b2)
select a1,a2 from inserted aaa
end
go
提示错误:
消息 311,级别 16,状态 1,过程 in_table,第 7 行
不能在 'inserted' 表和 'deleted' 表中使用 text、ntext 或 image 列。
a1,a2你的两个字段类型为text、ntext 或 image 改成字符串试下。
本回答被提问者和网友采纳 参考技术B “吧aaa中的a1字段的数据同步到b1,把a2字段中的数据同步到b1”?a1和a2都要与b1同步吗?你只关联了两表中的三个字段,当然只能更新关联的字段值。要实现两表同步(更新列、插入列)必须要关联需要更新表的主键。追问问题里面笔误,应该是“把aaa中的a1字段的数据同步到b1,把a2字段中的数据同步到b2”,只是单纯的两个字段对应同步,也就是说外部(网页程序)只是对aaa表进行操做,bbb进行相应的更新,不需要同步的字段留空
参考技术C 这个很简单吗 你对A表写个更新触发器就可以了 当A变有数据更新就可以直接更新B表了 这个很简单的 语法很简单 查下就有了 参考技术D 触发器吧追问我知道要用触发器,但是可以写几行代码参考一下吗
追答不好意思 触发器我也不是太懂 帮不了你
sqlserver 把两个sql查询语句查询出来的两张表合并成一张表
第一个sql语句
select companyname gsmc,zb zhibiao from t_gsndzb left join t_companycode on t_gsndzb.gsbh=t_companycode.companyid
查询结果:
第二个sql语句
SELECT min(companyname) gsmc,cast(round(sum(t_xstj.hsje)/10000,2) as numeric(20,2)) ndje FROM t_xstj left join t_companycode on t_companycode.companyid = t_xstj.gsbh where datediff(year,sj,getdate())=0 group by gsbh
查询结果:
合并成一张表的语句:
select isnull(a.gsmc,b.gsmc) gsmc,isnull(a.zhibiao,0) zhibiao,isnull(b.ndje,0) ndje from ( --第二个表查询结果-- select companyname gsmc,zb zhibiao from t_gsndzb left join t_companycode on t_gsndzb.gsbh=t_companycode.companyid ) A FULL JOIN ( --第二个表查询结果-- SELECT min(companyname) gsmc, cast(round(sum(t_xstj.hsje)/10000,2) as numeric(20,2)) ndje FROM t_xstj left join t_companycode on t_companycode.companyid = t_xstj.gsbh where datediff(year,sj,getdate())=0 group by gsbh ) b on a.gsmc=b.gsmc
结果:
以上是关于sql server2008,同一数据库里的两张不同的表怎么实现同步?的主要内容,如果未能解决你的问题,请参考以下文章