一个表A 如下
a b c d e
1001 0 3001 0 0第二个表B 如下
a b
1001 01
3001 02首先是一个触发器,当有数据插入到表B时,当所插入的字段a中的值与表A中的字段a或字段c中值相同时改写表A中相应的字段b或字段d表B中的值。即如上表则字段b改写为01等等。表A现在的结构可能不太好写,也可以修改成单条即如下,都是成对的,字段c为对id。当然不改最好了。
a b c d
1001 0 1 0
3001 0 1 0
存储过程1 找到记录 B.a=A.a
2 替换 B.b=0000
3 找到记录 B.a=A.c
4 替换 B.b=A.b
5 找到记录 B.a=A.a
6 替换 B.b=A.d
7 改写替换状态 A.e=1最后的结果就是表B中字段a的值与表A中成对的记录(字段a,字段c)的值进行了掉换。因表B中的字段a不能有重复的值出现所有中间用0000代替了一下。
a b c d e
1001 0 3001 0 0第二个表B 如下
a b
1001 01
3001 02首先是一个触发器,当有数据插入到表B时,当所插入的字段a中的值与表A中的字段a或字段c中值相同时改写表A中相应的字段b或字段d表B中的值。即如上表则字段b改写为01等等。表A现在的结构可能不太好写,也可以修改成单条即如下,都是成对的,字段c为对id。当然不改最好了。
a b c d
1001 0 1 0
3001 0 1 0
存储过程1 找到记录 B.a=A.a
2 替换 B.b=0000
3 找到记录 B.a=A.c
4 替换 B.b=A.b
5 找到记录 B.a=A.a
6 替换 B.b=A.d
7 改写替换状态 A.e=1最后的结果就是表B中字段a的值与表A中成对的记录(字段a,字段c)的值进行了掉换。因表B中的字段a不能有重复的值出现所有中间用0000代替了一下。
表B中会有几千条记录,这些记录都是一一添加进表B的
insert into A select 1001,0,3001,0,0create table B(a int,b varchar(4))
insert into B select 1001,'01'
insert into B select 3001,'02'
gocreate trigger trg_B on B
for insert
as
begin
update A
set
b=case i.a when A.a then i.b else A.b end,
d=case i.a when A.c then i.b else A.c end
from
inserted i
where
A.a=i.a or A.c=i.a
end
go