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

时间:2023-03-09 02:35:16
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('','支取',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=''; --测试 --查看结果
use TriggerTest
go
select * from transInfo2

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