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
此方法目前只适用于在同一台的服务器上的两个数据库的情况下使用