首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > .NET >

两表记录同步怎么处理

2012-09-18 
两表记录同步怎么办A表idname1n12n23n3由A表产生B表idnamedata1n12n23n3然后为B表的data 手工录入数据:idn

两表记录同步怎么办
A表
id name 
1 n1  
2 n2  
3 n3  

由A表产生B表
id name data
1 n1  
2 n2  
3 n3  
然后为B表的 data 手工录入数据:
id name data
1 n1 d1
2 n2 d2
3 n3 d3



A表改变为
id name  
1 n1  
3 n3  
4 n4  

B表变为
id name data
1 n1 d1  
3 n3 d3 
4 n4  

意思为A、B两表 id name 同步 ,但要保留 data字段输入的数据 
求 sql 或是处理过程

[解决办法]
分3种情况嘛

A表数据新增,B表也同时新增
insert into A(id,name) values(id,name)
insert into B(id,name) values(id,name)

A表数据更新,B表也同时更新
update B set id=new_id,name=new_name where id=id and name=name
update A set id=new_id,name=new_name where id=id and name=name

A表数据删除,B表数据删除
delete from B where id=id and name=name
delete from A where id=id and name=name

你总有办法判断用户会选择添加,更新和删除操作吧
[解决办法]
3楼已经给你答案了。

我假设a,b两个表,
a:
aid,aname aid为主键
b:
bid,bname,bdata bid为主键

然后……
给A表添加触发器,代码如下:

CREATE TRIGGER tr_test
ON a 
FOR INSERT,DELETE
AS 
BEGIN
SET NOCOUNT ON
IF EXISTS (SELECT * FROM inserted)
INSERT INTO b SELECT aname, '' FROM inserted 
ELSE
DELETE FROM b WHERE EXISTS (SELECT * FROM deleted WHERE bname = aname)
END
GO


测试语句:

use test
go

insert into a values ('n1')
insert into a values ('n2')
insert into a values ('n3')

update b set bdata = 'd1' where bname = 'n1'
update b set bdata = 'd2' where bname = 'n2'
update b set bdata = 'd3' where bname = 'n3'

delete from a where aname = 'n1'
insert into a values ('n4')
[解决办法]
增:Insert Into B(Id,[name]) Values('Id新值','name值')
删:Delete From B Where Id='旧Id值'
改:Update B Set [Name]='name值' Where Id='Id值'

热点排行