欢迎您访问我爱IT技术网,今天小编为你分享的编程技术是:【如何利用触发器实现两个数据库间的同步】,下面是详细的分享!
如何利用触发器实现两个数据库间的同步
若对于同一数据库实例中的两个数据库进行同步则直接对数据库表创建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
以上所分享的是关于如何利用触发器实现两个数据库间的同步,下面是编辑为你推荐的有价值的用户互动:
相关问题:如何利用触发器实现两个数据库间的同步
答:SQL Server 2005的联机帮助:Trigger on an INSERT, UPDATE, or DELETE statement to a table or view (DML Trigger)CREATE TRIGGER [ schema_name . ]trigger_nameON { table | view }[ WITH [ ,...n ] ]{ FOR | AFTER | INSTEAD OF } { [ INSE... >>详细
相关问题:Oracle 利用触发器在2个数据库之间同步进行update
答:--先在2个DB之间建立dblink,然后可参考以下代码进行编写: --说明:一般的更新都是增删改3个操作,我这只写了改的操作给你作参考。 Create Trigger tri_testabc After Update On tb_student_db1 For Each Row Declare Begin If updating Then U... >>详细
相关问题:sqlserver同一数据库中A,B两表。使用触发器实现两...
答:这个错误很明显 就是SET IDENTITY_INSERT TB_Customer ON 你这条语句在a触发器中已经开启 而b触发器也开启了 此时a触发器还没有关闭IDENTITY_INSERT 另外一个又打开 肯定会报错了 不为什么要插入标识列? 设为自动增长 就不需要这个命令了 你的... >>详细
- 评论列表(网友评论仅供网友表达个人看法,并不表明本站同意其观点或证实其描述)
-
