网站首页
JSP空间
动态资讯
开源项目
技术文档
资源下载
J2EE资源
客户论坛
在线支付
 
  技术文档>>数据库技术>>Oracle技术>>Oracle开发>查看文档  
  如何通过触发器实现数据库的即时同步     
  文章作者:未知  文章来源:赛迪网技术社区  
  查看:116次  录入:管理员--2008-04-10  
 

【赛迪网-it技术报道】>问题:如何通过触发器实现数据库的即时同步?

解答:具体的解决方法请参考下文。

即时同步两个表的示例如下:

测试环境如下:sql sever 2000数据库,远程主机名:xz,用户名:sa,密码:无,数据库名:test

创建测试表,请注意不能用标识列做主键,因为不能进行正常的更新。

然后在本机上创建测试表,注意远程主机上也要做同样的建表操作,只是不写触发器。

if exists (select * from dbo.sysobjects where id = object_id(n'[test]') and objectproperty(id, n'isusertable') = 1)

drop table [test]

create table test(id int not null constraint pk_test primary key

,name varchar(10))

go

--创建同步的触发器

create trigger t_test on test

for insert,update,delete

as

set xact_abort on

--启动远程服务器的msdtc服务

exec master..xp_cmdshell 'isql /s"xz" /u"sa" /p"" /q"exec master..xp_cmdshell ''net start msdtc'',no_output"',no_output

--启动本机的msdtc服务

exec master..xp_cmdshell 'net start msdtc',no_output

--进行分布事务处理,假如表用标识列做主键,你可以使用下面的这个方法

begin distributed transaction

delete from openrowset('sqloledb','xz';'sa';'',test.dbo.test)

where id in(select id from deleted)

insert into openrowset('sqloledb','xz';'sa';'',test.dbo.test)

select * from inserted

commit tran

go

--插入数据测试

insert into test

select 1,'aa'

union all select 2,'bb'

union all select 3,'c'

union all select 4,'dd'

union all select 5,'ab'

union all select 6,'bc'

union all select 7,'ddd'

--删除数据测试

delete from test where id in(1,4,6)

--更新数据测试

update test set name=name+'_123' where id in(3,5)

--最后显示测试的结果

select * from test a full join

openrowset('sqloledb','xz';'sa';'',test.dbo.test) b on a.id=b.id

 
 
上一篇: 用一个实例讲解如何正确使用数据库游标    下一篇: 如何使用new_value将查询结果传递给变量
  相关文档
丢失归档日志文件后数据库应当如何恢复 (1) 04-16
详细讲述Oracle中的to_date参数含义 05-27
教你轻松掌握Oracle数据库中的物理结构 09-29
解析:ORACLE性能调整--统计信息的迁移 08-05
教你轻松解决不能一次创建多表的问题 11-15
教你轻松掌握如何把数据导入不同的表空间 11-15
修改表空间的SQL代码 01-15
检测可用性所需要的命令为何多于ping命令 04-11
深入讲解调整oracle sga大小的解决方法 04-07
Oracle与FoxPro两数据库的数据转换 05-13
配置windows与linux平台的data gurad (1) 05-28
开发篇之 Oracle触发器心得体会 05-27
oracle性能调优过程中如何观察缓存命中率 04-29
oracle数据库中为什么会产生回滚与前退 04-18
管理好密码文件对于执行数据库管理的重要性 (1) 07-21
事务保存点在一个订购系统中的使用情况 07-21
"oracle"闪回功能恢复偶然丢失的数据 (1) 02-27
实例讲解表碎片的具体起因及解决的办法 (1) 02-25
解析:oracle热备期间过量redo生成控制 11-15
哪些因素可以影响oracle数据库的性能 03-11
返回首页 | 关于我们 | J网章程 | JSP空间合租 | 客服中心 | 免责声明 | 常见问题 | 参观机房
本站主机空间代理至厦门市华众网络科技有限公司
《中华人民共和国增值电信业务经营许可证》
编号:闽B2-20050079
@2005-2008福建JSP技术网 版权所有 闽ICP备05000928号
厦门(总部):13616026886 福州:0591-87655121
邮箱:admin@fjjsp.com 站长QQ,点击这里给我发消息