SQL server 使用触发器跨数据库备份数据

create database TriggerTest

create table transInfo2 --交易信息表
(
   cardID     varchar(10) not null,  --卡号
   transType  char(4)     not null,  --交易类型(存入/支取)
   transMoney money       not null,  --交易金额
   transDate  datetime    not null   --交易日期
)
go

create database TriggerDatabase
use TriggerDatabase
go

create table transInfo --交易信息表
(
   cardID     varchar(10) not null,  --卡号
   transType  char(4)     not null,  --交易类型(存入/支取)
   transMoney money       not null,  --交易金额
   transDate  datetime    not null   --交易日期
)
go

--------------- 添加测试数据 ---------------
insert into transInfo(cardID,transType,transMoney)
        values('10000','支取',200);

--------------- 查看结果 ---------------
select * from transInfo;
go

/* 实现: 当删除TriggerDatabase数据库transInfo表中的数据时,
         自动备份被清除的数据到TriggerTest数据库中的transInfo2表中
*/
------------------ delete 触发器 ------------------
use TriggerDatabase
go

if exists (select * from sysobjects 
           where name='trig_delete_transInfo')
drop trigger trig_delete_transInfo
go

create trigger trig_delete_transInfo
on transInfo after delete  --  for | after
as
   -- 如果数据库中,不存在 backupTable 表
   if not exists(select * from sysobjects 
                  where name='TriggerTest.dbo.transInfo2')
      insert into TriggerTest.dbo.transInfo2 select * from deleted --deleted临时表
   else
      insert into TriggerTest.dbo.transInfo2 select * from deleted
go

------------------ 测试触发器 ------------------
set nocount on

delete from transInfo where cardid='10000'; --测试

--查看结果
use TriggerTest
go
select * from transInfo2

此方法目前只适用于在同一台的服务器上的两个数据库的情况下使用

原文地址:https://www.cnblogs.com/xuxw/p/3435194.html