SQL Server 做增量,同步数据方法一:
1)sql server增量到sql server 中
create trigger insert_for_b on aeg:
after insert
as
begin
insert into b(插入a表字段)
select 插入a表字段 from inserted
--插入a表字段表示a表的所有字段,如果这里需要b表其他字段,要加固定的值
end
go
create trigger insert_for_student on classmeet
after insert
as
begin
insert into student(id,name,sex)
select id,name,sex from inserted
--插入a表字段表示a表的所有字段,如果这里需要b表其他字段,要加固定的值
end
go
2)在做增量时候,修改数据
最近有个使用触发器实现对插入数据的某个列做更改的需求,因此整理了Oracle和SQL Server对于此类需求的触发器写法,本文仅提到了Insert触发器。
首先我们创建一张表:
我们的目的是实现新插入的数据满足sex字段为null时就把status设为1的需求,可根据实际需要更改条件。
因此SQL Server的写法为:
PS:
@@fetch_status是MSSQL的一个全局变量
其值有以下三种,分别表示三种不同含义:【返回类型integer】
0 FETCH 语句成功
-1 FETCH 语句失败或此行不在结果集中
-2 被提取的行不存在
@@fetch_status值的改变是通过fetch next from实现的
“FETCH NEXT FROM Cursor”
oracle的写法为:
也可以实现同样的功能。
总结与比较:
我们发现由于Oracle提供了before/after的触发器写法因此实现起来更为简单,而SQL Server只能依靠游标来实现,显然Oracle的实现办法更加简单明了。
但并不是说所有情况下Oracle的语法都更好,某些时候SQL Server的语法也可以实现Oracle触发器很难实现的功能。