使用触发器即时同步两个表的实例
即时同步两个表的实例:
--测试环境:SQL2000,远程主机名: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
使用触发器即时同步两个表的实例相关推荐
- 触发器初接触-同步两个表的指定字段
博客已经申请5个月了,= = 到现在一篇随笔都没写过.那就写写吧. 前几天,一位朋友说他有个需求:同步两个表的指定字段,问有什么办法.后来用触发器来实现了下,之前也没写过,所以还是在这里记录下吧. 需 ...
- 关于跨DB增量(增、改)同步两张表的数据小技巧
有些场景下,需要隔离不同的DB,彼此DB之间不能互相访问,但实际的业务场景又需要从A DB访问B DB的情形,这时怎么办?我认为有如下常规的三种方案: 1.双方提供RESET API,需要访问不同DB ...
- mysql 触发器 模板_MySQL 触发器例子(两张表同步增加和删除)
MySQL 触发器例子(两张表同步增加和删除),有需要的朋友可以参考下. 例子1: 创建两个表,目的是在一个表里添加一条记录,另一个表也添加一条记录: DROP TABLE IF EXISTS tab ...
- mysql触发器删除同步_MySQL 触发器例子(两张表同步增加和删除)
以下两个例子来自: http://www.cnblogs.com/nicholas_f/archive/2009/09/22/1572050.html 实测有效,但是原帖的分隔符不正确,因此稍作修改. ...
- mysql 两个数据库指定表同步_mysql从2个数据库中同步两个表
我无法相信你没有找到合适的脚本来做到这一点.根据服务器到服务器的带宽和连接以及表数据大小,您可以: >直接转移整个表: mysqldump [options] sourcedatabase ta ...
- MySQL同步两张表数据
一.背景 项目中客户需要一个发布/编辑的功能,数据要存档. 我的方案设计是新建两张表,一张主表用于查询,一张临时表用于增删改. 增删改操作的表命名为XXX_temp,后台管理操作.后台操作完成后需要把 ...
- sql server 触发器实时同步数据库表数据
sql server 触发器实时同步数据库表数据 创建两个相同结构的数据库表 CREATE TABLE [dbo].[Table_1]([id] [varchar](50) NOT NULL,[nam ...
- MySQL可以同时修改两个表吗_(10)MySQL触发器(同时操作两张表)
什么是触发器 触发器是与表有关的数据库对象,在满足定义条件时触发,并执行触发器中定义的语句集合.触发器的这种特性可以协助应用在数据库端确保数据的完整性. 举个例子,比如你现在有两个表[用户表]和[日志 ...
- (10)MySQL触发器(同时操作两张表)
什么是触发器 触发器是与表有关的数据库对象,在满足定义条件时触发,并执行触发器中定义的语句集合.触发器的这种特性可以协助应用在数据库端确保数据的完整性. 举个例子,比如你现在有两个表[用户表]和[日志 ...
最新文章
- java中struts2日期_Struts2中Date日期转换的问题
- 【RK3399Pro学习笔记】四、ROS 创建工作空间与功能包
- 袁亚湘:愿为数学做更多
- C语言过时了?你在做梦?
- java 提取电话号码_java – 如何使用正则表达式提取字符串的电话号码?
- linux3.10内核支持mpls,将MPLS编译进linux内核中
- python绘制正方形、利用turlr_《像计算机科学家一样思考Python》学习笔记(四)...
- 利用JDK自带的keytool生成SSL证书然后导入到SpringBoot
- mysql 单向自动同步_mysql单向自动同步
- Gentoo解决Windows系统txt文本中文乱码问题
- python之MRO和垃圾回收机制
- AppStore下载安装失败
- html自动刷新插件谷歌,Super Auto Refresh:定时自动重新刷新网页
- The overload Pattern
- Discuz!您当前的访问请求当中含有非法字符,已经被系统拒绝解决办法
- 云原生—Rust编程语言能与C/C++媲美
- 西密歇根大学计算机科学专业排名,西密歇根大学有哪些专业_专业排名(USNEWS美国大学排名)...
- 【python爬虫】使用代理IP进行网站爬取
- 中国轮胎行业前景规划及未来发展趋势展望报告2022-2028年版
- 狂神说——JavaScript最新教程通俗易懂