您的位置:首页 > 数据库

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

2013-11-21 11:15 447 查看
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


此方法目前只适用于在同一台的服务器上的两个数据库的情况下使用
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: