快速,持续,稳定,傻瓜式
支持Mysql,Sqlserver数据同步

SQL Server 做增量

在线QQ客服:1922638

专业的SQL Server、MySQL数据库同步软件

用于增量数据同步方法的SQL Server One :

1)sql server到sql server的增量

插入

begin
插入b(插入表格字段)
从已插入的
中选择插入表格字段。"/>-插入表格字段以代表表格a的所有字段。如果此处需要表b的其他字段,则应添加一个固定值
end

 

例如:

在classmeet上创建触发器insert_for_student

插入后

作为

开始

插入学生(身份证,姓名,性别)

从插入的ID中选择ID,名称,性别

-插入一个表字段来代表一个表的所有字段,如果您在此需要b表的其他字段,则需要添加一个固定值

结束


2)做增量时修改数据

最近需要使用触发器来对插入的数据列进行更改,因此Oracle进行了组织的SQL

服务器针对此类需求编写触发器,本文仅提及插入触发器。

首先,我们创建一个表格:

[csharp] ?视图

普通?复制

  1. -创建测试表
  2. 创建?表?测试(id? int ?主键,名称,varchar(20),性别,varchar(1),状态? int

我们的目的是实现当性别字段为null时,新插入的数据满足将状态设置为1的要求。 ,条件可根据实际需要改变。

因此,SQL Server编写为:

[csharp] ?视图

普通?复制

  1. 创建?触发? [dbo]。 [trg1]?上? [dbo]。 [测试]? for ?插 ?
  2. as

    声明? C?光标? for ?选择?身份证,性别?从?插入

  3. 声明? @ID? int

  4. 声明? @性别? varchar(1)

  5. 打开? c

  6. 捕获?下一个?从? C?进? @ id,@ sex

  7. 虽然? @@ FETCH_STATUS? =? 0

  8. 开始

  9. 如果 ? @性?

  10. 更新? dbo.test? 设置 ?状态= 1?哪里? id = @ id-使用此处的主键更新以实现最大效率

  11. 捕获?下一个?从? C?进? @ id,@ sex

  12. END

  13. 关闭? c

  14. 取消分配? c

PS:

@@ fetch_status是MSSQL的全局变量

该值具有以下三种类型,分别表示三种不同的含义:[返回类型整数]

0条FETCH语句成功

-1 FETCH语句失败或该行不在结果集中

-2提取的行不存在

@@ fetch_status值更改是通过

的下一个访存来实现的

“从游标中移出下一个”

oracle被写为:

[csharp] ?视图

普通?复制

  1. 创建?要么?更换?触发? trg1?
  2. 之前?插?上?测试

  3. 引用? as new ?旧? as ?旧

  4. for ?每?行

  5. 开始

  6. 如果 ?:old.sex 是? null ?然后

  7. : new 。状态:= 1;

  8. 结尾? if ;

  9. 结束? trg1;

可以实现相同的功能。

摘要和比较:

我们发现,由于Oracle提供触发器编写之前/之后,因此更易于实现,并且SQL Server仅依靠游标来实现,显然Oracle的实现方法更加简单明了。

但是,并不是说Oracle的语法在所有情况下都更好,有时不是SQL Server的语法可以实现Oracle触发器难以实现的功能。

相关推荐

咨询软件
 
QQ在线咨询
售前咨询热线
QQ1922638