create trigger tr_update_Table_1
  on   rwqd  
  FOR  UPDATE
  As
   update dataabc.dbo.Table_1  set NO2='OK' from  dataabc.dbo.Table_1 aa,inserted bb where aa.NO1=bb.xh
  go

PS:

Create Table Student(              --学生表
        StudentID int primary key,       --学号
        ....
       )

Create Table BorrowRecord(               --学生借书记录表
        BorrowRecord   int identity(1,1),       --流水号  
        StudentID      int ,                    --学号
        BorrowDate     datetime,                --借出时间
        ReturnDAte     Datetime,                --归还时间
        ...
      )

--用到的功能有:
        --1.如果我更改了学生的学号,我希望他的借书记录仍然与这个学生相关(也就是同时更改借书记录表的学号);
        --2.如果该学生已经毕业,我希望删除他的学号的同时,也删除它的借书记录。
     --等等。

--这时候可以用到触发器。对于1,创建一个Update触发器:

Create Trigger truStudent
       On Student                         --在Student表中创建触发器
       for Update                          --为什么事件触发
     As                                        --事件触发后所要做的事情
       if Update(StudentID)           
       begin

Update BorrowRecord
           Set StudentID=i.StudentID
           From BorrowRecord br , Deleted   d ,Inserted i      --Deleted和Inserted临时表
           Where br.StudentID=d.StudentID

end       
                
     --理解触发器里面的两个临时的表:Deleted , Inserted 。注意Deleted 与Inserted分别表示触发事件的表“旧的一条记录”和“新的一条记录”。
     --一个数据库系统中有两个虚拟表用于存储在表中记录改动的信息,分别是:
      --                       虚拟表Inserted                     虚拟表Deleted

--在表记录新增时     存放新增的记录                         不存储记录
--         修改时           存放用来更新的新记录                   存放更新前的记录
--         删除时           不存储记录                             存放被删除的记录

--一个Update 的过程可以看作为:生成新的记录到Inserted表,复制旧的记录到Deleted表,然后删除Student记录并写入新纪录。

PS:========================================================================================
--*********************************************************************************--                 链接服务器,不同服务器数据库之间的数据操作--*********************************************************************************
1、--创建链接服务器
exec sp_addlinkedserver   '链接服务器名', ' ', 'SQLOLEDB', '远程服务器名或ip地址 '
exec sp_addlinkedsrvlogin  '链接服务器名', 'false ',null, '用户名', '密码'
2、启动两台服务器的MSDTC服务
MSDTC服务提供分布式事务服务,如果要在数据库中使用分布式事务,必须在参与的双方服务器启动MSDTC(Distributed Transaction Coordinator)服务。3、打开双方的135端口
MSDTC服务依赖于RPC(Remote Procedure Call (RPC))服务,RPC使用135端口,保证RPC服务启动,如果服务器有防火墙,保证135端口不被防火墙挡住。
使用“telnet IP 135”命令测试对方端口是否对外开放。也可用端口扫描软件(比如Advanced Port Scanner)扫描端口以判断端口是否开放
4、--如要创建触发器  
create   trigger   t_test   on   test  
for   insert,update,delete  
as
--加上下面两句,否则会提示新事务不能登记到指定事务处理器
set    xact_abort   on 
begin  distributed   tran
 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--查询示例
select * from 链接服务器名.数据库名.dbo.表名 --导入示例
select * into 表 from 链接服务器名.数据库名.dbo.表名 --以后不再使用时删除链接服务器
exec sp_dropserver  '链接服务器名 ', 'droplogins ' --**************************************************************************************                --连接远程/局域网数据(openrowset/openquery/opendatasource) --**************************************************************************************
--1、openrowset --查询示例
select * from openrowset( 'SQLOLEDB', 'sql服务器名'; '用户名'; '密码',数据库名.dbo.表名) --生成本地表
select * into 表 from openrowset( 'SQLOLEDB', 'sql服务器名'; '用户名'; '密码',数据库名.dbo.表名) --把本地表导入远程表
insert openrowset( 'SQLOLEDB', 'sql服务器名'; '用户名'; '密码',数据库名.dbo.表名)
select *from 本地表 --更新本地表
update b
set b.列A=a.列A
 from openrowset( 'SQLOLEDB', 'sql服务器名'; '用户名'; '密码',数据库名.dbo.表名)as a inner join 本地表 b
on a.column1=b.column1 --2、openquery --首先创建一个连接创建链接服务器 exec sp_addlinkedserver   '链接服务器名', ' ', 'SQLOLEDB', '远程服务器名或ip地址'
exec sp_addlinkedsrvlogin  '链接服务器名', 'false ',null, '用户名', '密码'
--查询
select * FROM openquery(链接服务器名,  'SELECT *  FROM 数据库.dbo.表名')
--把本地表导入远程表
insert openquery(链接服务器名,  'SELECT *  FROM 数据库.dbo.表名')
select * from 本地表
--更新本地表
update b
set b.列B=a.列B
FROM openquery(链接服务器名,  'SELECT * FROM 数据库.dbo.表名') as a 
inner join 本地表 b on a.列A=b.列A --3、opendatasourceSELECT   *
FROM   opendatasource( 'SQLOLEDB',  'Data Source=ip/ServerName;User ID=登陆名;Password=密码' ).test.dbo.表名
--把本地表导入远程表
insert opendatasource( 'SQLOLEDB',  'Data Source=ip/ServerName;User ID=登陆名;Password=密码').数据库.dbo.表名
select * from 本地表

SQL2008-不同数据库之间的触发器的更多相关文章

  1. 多种数据库之间的同步工具SymmetricDS

    代码:https://github.com/JumpMind/symmetric-ds 原理: 通过触发器模式同步时,是将数据库的变化记录到某个系统表中,然后在客户端建立缓冲,并定期将变化push到接 ...

  2. 技术分享|SQL和 NoSQL数据库之间的差异:MySQL(VS)MongoDB

    在当今市场上,存在各种类型的数据库,选择适合你业务类型的数据库对应用的开发和维护有着重要意义.本篇文章,将为大家分享SQL和NoSQL语言之间的区别,同时还将比较这两种类型的数据库,以帮助小伙伴们选择 ...

  3. (转)SqlServer 数据库同步的两种方式 (发布、订阅),主从数据库之间的同步

    最近在琢磨主从数据库之间的同步,公司正好也需要,在园子里找了一下,看到这篇博文比较详细,比较简单,本人亲自按步骤来过,现在分享给大家. 在这里要提醒大家的是(为了更好的理解,以下是本人自己理解,如有错 ...

  4. 在SQL2008配置数据库镜像1418错误的处理

    在SQL2008配置数据库镜像错误一般都由以下原因造成 1.主体.镜像服务器SQL SERVER选择本账号切保持一致 2.在数据库镜像配置向导中的“服务账号”选项中请选择需要同步数据库的登陆名,例如数 ...

  5. 如何做到在虚拟数据库和真实数据库之间自由切换?【低调赠送:QQ高仿版GG 4.4 最新源码】

    记得以前在公司上班时,有时候白天的活没干完,我就会把工作带回家晚上加班继续做.但是,我们开发用的数据库是部署在公司局网内部的一台服务器上的,在家里是肯定连不上这台机器的.在家里没有数据库,服务端就跑不 ...

  6. SQL不同服务器数据库之间的数据操作整理(完整版)

    ---------------------------------------------------------------------------------- -- Author : htl25 ...

  7. Java与数据库之间时间的处理

    Java与数据库之间时间的处理 在数据库中建表: DROP TABLE IF EXISTS `times`; CREATE TABLE `times` ( `id` int(11) NOT NULL ...

  8. Hibernate基于注解方式配置来实现实体和数据库之间存在某种映射关系

    实体和数据库之间存在某种映射关系,hibernate根据这种映射关系完成数据的存取.在程序中这种映射关系由映射文件(*.hbm.xml)或者java注解(@)定义. 本文以java注解的形式总结映射关 ...

  9. 在db2中 两个数据库之间的两个表的联合查询

    大家好,今天遇到了在db2中 两个数据库之间的两个表的联合查询 我知道oracle中有dblink,可是不知到db2的两个数据库联合查询怎么处理我找了类似于比如两个数据库: db1,db2用户名密码s ...

随机推荐

  1. CodeForces 279B Books

    http://codeforces.com/problemset/problem/279/B 题意 :Valera 有很多的空闲时间,所以他决定看书,给出n本书,编号1到n,和看每本书需要的时间,他看 ...

  2. Jmeter java协议测试jar和依赖jar的路径研究

    昨天在使用2.12版本的jmeter时,执行多机负载测试一直报错,最终查明是使用不当的问题,现将详情记录如下,使用jmeter测试java协议脚本时要注意以下几点: 1. jar包的方式路径一定是这样 ...

  3. 188. Best Time to Buy and Sell Stock IV

    题目: 链接: 题解: 测试: Reference:

  4. http_build_query函数(学习)

    http_build_query函数   http_build_query -- 生成 url-encoded 之后的请求字符串 描述 string http_build_query ( array ...

  5. 【HDOJ】3948 The Number of Palindromes

    后缀数组求不重复回文子串数目.注意dp数组. /* 3948 */ #include <iostream> #include <sstream> #include <st ...

  6. tophat输出结果junction.bed

    tophat输出结果junction.bed BED format       BED format provides a flexible way to define the data lines ...

  7. Asp.net调用百度搜索引擎

    ASP.NET 调用百度搜索引擎 百度搜索引擎提供了一段嵌入到页面中的代码 <form action="http://www.baidu.com/baidu" target= ...

  8. varchar与nvarchar的区别

    nvarchar可变长度的Unicode字符数据 varchar可变长度且非 Unicode 的字符数据 举例: varchar(1)   --可以插进入一个数字或者一个字母,如果要插入一个汉字改为v ...

  9. 开源项目ets_cache分析

    1 背景 当在程序中,有大量的数据需要读写,数据库的响应会延迟,甚至阻塞.缓存可以缓解对数据库访问的压力,而且在内存中数据的读写要比读写硬盘上的数据快. 2 目的 ets_cache是用erlang实 ...

  10. 求大于整数m且紧靠m的k个素数 及 判断一个数是否为素数的方法

    题目: 请编写一个函数void fun(int m,int k ,int xx[]),该函数的功能是:将大于整数m且紧靠m的k个素数存入xx所指的数组中. 例如,若输入:17,5,则应输出:19,23 ...