例如 A表 两个字段 AA、BB
B表 三个字段 AA、BB、CC
cc字段是可以为空的
用触发器如何实现 把A表中的数据同步到B表中啊?我写了后给我报错插入错误: 列名或所提供值的数目与表定义不匹配另外求教一下:用复制监视器的方式是不是只能是针对相同字段值的两个表进行同步?
B表 三个字段 AA、BB、CC
cc字段是可以为空的
用触发器如何实现 把A表中的数据同步到B表中啊?我写了后给我报错插入错误: 列名或所提供值的数目与表定义不匹配另外求教一下:用复制监视器的方式是不是只能是针对相同字段值的两个表进行同步?
for update
as
begin
update b set aa=i.aa,bb=i.bb from b join inserted i on a.aa=i.aa
end
for update
as
begin
if update(a)
update b set aa=i.aa,bb=i.bb from b join inserted i on a.aa=i.aa
end
create trigger gengxin_insert on A
after insert
as
begin
insert B select * from inserted
end
go楼上的有错误吧? b join i 怎么能 on a=i 呢?
create trigger gengxin_insert on A
after insert
as
begin
insert B(AA,BB) select * from inserted
end
go
--B表的列和A表的类数量不一致,不出错才怪...SQL没那么智能
除了自增字段,而且位置还必须在第一列上
Create table #a
(
ID int IDentity
,name varchar(100)
)
Insert #a Select name From sysobjects
drop table #aCreate table #a(name varchar,id int identity(1,1))
Insert #a Select name From sysobjects
drop table #a
create trigger gengxin_insert on A
after insert
as
begin
insert B(aa,bb) select m.aa,m.bb from inserted m where aa=m.aa and bb=m.bb
end
go
after insert
as
begin
insert B(aa,bb) select aa,bb from inserted m
where not exists (
select 1 from b
where aa = m.aa and bb = m.bb
)
end
go