如何利用触发器实现两个数据库间的同步
作者:罗丽娜 发布时间:2009-01-06 11:26:00
若对于同一数据库实例中的两个数据库进行同步则直接对数据库表创建Trigger。
SQL Server 2005的联机帮助:
Trigger on an INSERT, UPDATE, or DELETE statement to a table or view (DML Trigger)
CREATE TRIGGER [ schema_name . ]trigger_name
ON { table | view }
[ WITH [ ,...n ] ]
{ FOR | AFTER | INSTEAD OF } { [ INSERT ] [ , ] [ UPDATE ] [ , ] [ DELETE ] }
[ WITH APPEND ]
[ NOT FOR REPLICATION ]
AS { sql_statement [ ; ] [ ...n ] | EXTERNAL NAME }
::= [ ENCRYPTION ] [ EXECUTE AS Clause ]
::= assembly_name.class_name.method_name
以下是一个例子
set ANSI_NULLS ON
set QUOTED_IDENTIFIER ON
go
-- =============================================
-- Author: gsoosg
-- Create date: 2007-12-24
-- Description:
-- =============================================
CREATE TRIGGER [Trigger_Add_Carduser]
ON [dbo].[carduser]
AFTER INSERT
AS
BEGIN
-- SET NOCOUNT ON added to prevent extra result sets from
-- interfering with SELECT statements.
SET NOCOUNT ON;
set insert ParkFee.dbo.card_user(card_user_id,card_user_name,sex)
select card_user_id,card_user_name,sex from inserted
END
说明:
上例实现了为当前数据库中表carduser创建触发器当插入数据时,同步向ParkFee数据库表dbo.card_user插入数据,从而达到同步插入。类同,可将insert语句改为update,delete。
注意:
若想利用此方法达到反向同步则可能出现问题,比如想在parkfee数据库有新数据插入时让当前数据库也同时插入一条记录,建立一个触发器,则形成了一个循环触发,当插入数据时会报大于最大递归次数错。因此因避免这样的触发循环,若要达到类似效果还须想别的方法。(待续)
补充:
若两个库处于不同的数据库服务器则应先进行以下操作:
在 server1 上创建连接服务器,以便在 server1 中操作 server2,实现同步
exec sp_addlinkedserver 'server2','','SQLOLEDB','server2的数据库实例名或ip'
exec sp_addlinkedsrvlogin 'server2','false',null,'用户名','密码'
go


猜你喜欢
- 一、利用Google API生成二维码Google提供了较为完善的二维码生成接口,调用API接口很简单,以下是调用代码:$urlToEnco
- php遍历一个文件夹内的所有文件和文件夹,并删除所有文件夹和子文件夹下的所有文件的代码,通过递归方式实现达到清空一个目录的效果,代码简单实用
- MySQL中的事件调度器,EVENT,也叫定时任务,类似于Unix crontab或Windows任务调度程序。EVENT由其名称和所在的s
- 我们先看一下浅复制的缺陷,不知多少人中过招呢? var oOriginal = { memNum: 1, // number memStr:
- 前两天看的时候,所用的歌曲地址加密方式已变更。将以前的发出来供大家赏玩。解密函数是从flash里面反编译出来的,加密函数是自己根据解密函数写
- ewebeditor支持兼容IE8 的方法方法:前几天ie8正式公布了,当天中午我就去下载了一个迫不急待的将自己的浏览器升级到ie8,偶还刻
- 先来看个实例#!/usr/bin/env python import sys def search2(a,m):
- import shutil高级的文件,文件夹,压缩包的处理模块,也主要用于文件的拷贝shutil.copyfileobj(fsrc,fdst
- 如下所示:安装kafka支持库pip install kafka-pythonfrom kafka import KafkaProducer
- 在编写JavaScript代码的时候存在的一些方法和技巧,虽然有时候条条大路都通向罗马,但是也许总会有那么一条最短的路径可走。本文将一些都知
- 第一个测试 “Hello Test!”首先,在我们$GOPATH/src目录下创建hello目录,作为本文涉及到的所有示例代码的根目录。然后
- 1、获取插入数据的主键idimport pymysqldatabase = pymysql.connect( host=&quo
- 这篇文章主要介绍了Python和Sublime整合过程图示,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要
- MySQL基本增删改查语句练习创建数据库:1、在cmd窗口中输入mysql -u root -p登录MySQL环境2、创建数据库为了便于在命
- NumPy数组的维数称为秩(rank),一维数组的秩为1,二维数组的秩为2,以此类推。在NumPy中,每一个线性的数组称为是一个轴(axes
- 一、Sql Server中的日期与时间函数 1. 当前系统日期、时间 select getdate() 2. dateadd 在向指定日期加
- 浏览器缓存浏览器缓存是浏览器在本地磁盘对用户最近请求过的文档进行存储,当访问者再次访问同一页面时,浏览器就可以直接从本地磁盘加载文档。所以根
- 本文实例讲述了Python序列对象与String类型内置方法。分享给大家供大家参考,具体如下:前言在Python数据结构篇中介绍了Pytho
- 记录应用程序的操作日志可以使用数据库、文本文件、XML文件等。我这里介绍的是使用 XML 文件记录操作日志。我觉得使用 XML 记录操作日志
- 实例如下所示:import matplotlib.pyplot as pltplt.imshow(img)#控制台打印出图像对象的信息,而图