用触发器来自动实时备份重要表数据

在数据库有一个比较重要的全局表,为了防止误操作,使用触发器自动生成实时备份数据

SQL语句如下:

--原表

if exists (select * from dbo.sysobjects where id = object_id(N'[Veg_Enum]') and OBJECTPROPERTY(id, N'IsUserTable') = 1)

drop table [Veg_Enum]

GO

CREATE TABLE [Veg_Enum] (

    [E_ID] [int] IDENTITY (1, 1) NOT NULL ,

    [E_Name] [nvarchar] (50) COLLATE Chinese_PRC_CI_AS NOT NULL CONSTRAINT [DF__Veg_Enum__E_Name__6497E884] DEFAULT ('枚举名称'),

    [E_Type] [int] NOT NULL CONSTRAINT [DF__Veg_Enum__E_Type__658C0CBD] DEFAULT (0),

    [E_TypeName] [nvarchar] (50) COLLATE Chinese_PRC_CI_AS NOT NULL CONSTRAINT [DF__Veg_Enum__E_Type__668030F6] DEFAULT ('枚举类型名称'),

    [E_Value] [int] NOT NULL CONSTRAINT [DF__Veg_Enum__E_Valu__6774552F] DEFAULT (0),

    [E_Parent] [int] NOT NULL CONSTRAINT [DF__Veg_Enum__E_Pare__68687968] DEFAULT (0),

    [E_TypeParent] [int] NOT NULL CONSTRAINT [DF__Veg_Enum__E_Type__695C9DA1] DEFAULT (0),

    [O_ID] [int] NOT NULL CONSTRAINT [DF_Veg_Enum_O_ID] DEFAULT (0),

    [O_Name] [nvarchar] (20) COLLATE Chinese_PRC_CI_AS NULL ,

    [O_Code] [nvarchar] (255) COLLATE Chinese_PRC_CI_AS NULL ,

    [IsActive] [tinyint] NOT NULL CONSTRAINT [DF__Veg_Enum__IsActi__6A50C1DA] DEFAULT (0),

    [F1] [int] NOT NULL CONSTRAINT [DF__Veg_Enum__F1__6B44E613] DEFAULT (0),

    [F2] [int] NOT NULL CONSTRAINT [DF__Veg_Enum__F2__6C390A4C] DEFAULT (0),

    [F3] [int] NULL ,

    [F4] [int] NULL ,

    [F5] [int] NULL ,

    [F6] [int] NULL ,

    [F7] [nvarchar] (255) COLLATE Chinese_PRC_CI_AS NULL ,

    [F8] [nvarchar] (255) COLLATE Chinese_PRC_CI_AS NULL ,

    [F9] [nvarchar] (255) COLLATE Chinese_PRC_CI_AS NULL ,

    [F10] [nvarchar] (255) COLLATE Chinese_PRC_CI_AS NULL ,

    [F11] [nvarchar] (255) COLLATE Chinese_PRC_CI_AS NULL ,

    [F12] [nvarchar] (255) COLLATE Chinese_PRC_CI_AS NULL ,

    [CreateTime] [datetime] NOT NULL CONSTRAINT [DF__veg_Enum__Create__6D2D2E85] DEFAULT (getdate()),

    [B_date] [datetime] NULL ,

    [E_Date] [datetime] NULL ,

    CONSTRAINT [PK_VEG_ENUM] PRIMARY KEY  CLUSTERED 

    (

        [E_ID]

    )  ON [PRIMARY] 

) ON [PRIMARY]

GO

 

--备份表,注意多了个PKID字段

if exists (select * from dbo.sysobjects where id = object_id(N'[Veg_Enum_BAk]') and OBJECTPROPERTY(id, N'IsUserTable') = 1)

drop table [Veg_Enum_BAk]

GO

CREATE TABLE [Veg_Enum_BAk] (

    [PKID] [int] IDENTITY (1, 1) NOT NULL ,

    [E_ID] [int] NOT NULL ,

    [E_Name] [nvarchar] (50) COLLATE Chinese_PRC_CI_AS NOT NULL CONSTRAINT [DF__Veg_Enum__E_Name__6497E884000] DEFAULT ('枚举名称'),

    [E_Type] [int] NOT NULL CONSTRAINT [DF__Veg_Enum__E_Type__658C0CBD000] DEFAULT (0),

    [E_TypeName] [nvarchar] (50) COLLATE Chinese_PRC_CI_AS NOT NULL CONSTRAINT [DF__Veg_Enum__E_Type__668030F6000] DEFAULT ('枚举类型名称'),

    [E_Value] [int] NOT NULL CONSTRAINT [DF__Veg_Enum__E_Valu__6774552F00] DEFAULT (0),

    [E_Parent] [int] NOT NULL CONSTRAINT [DF__Veg_Enum__E_Pare__68687968000] DEFAULT (0),

    [E_TypeParent] [int] NOT NULL CONSTRAINT [DF__Veg_Enum__E_Type__695C9DA1000] DEFAULT (0),

    [O_ID] [int] NOT NULL CONSTRAINT [DF_Veg_Enum_O_ID00] DEFAULT (0),

    [O_Name] [nvarchar] (20) COLLATE Chinese_PRC_CI_AS NULL ,

    [O_Code] [nvarchar] (255) COLLATE Chinese_PRC_CI_AS NULL ,

    [IsActive] [tinyint] NOT NULL CONSTRAINT [DF__Veg_Enum__IsActi__6A50C1DA00] DEFAULT (0),

    [F1] [int] NOT NULL CONSTRAINT [DF__Veg_Enum__F1__6B44E61300] DEFAULT (0),

    [F2] [int] NOT NULL CONSTRAINT [DF__Veg_Enum__F2__6C390A4C00] DEFAULT (0),

    [F3] [int] NULL ,

    [F4] [int] NULL ,

    [F5] [int] NULL ,

    [F6] [int] NULL ,

    [F7] [nvarchar] (255) COLLATE Chinese_PRC_CI_AS NULL ,

    [F8] [nvarchar] (255) COLLATE Chinese_PRC_CI_AS NULL ,

    [F9] [nvarchar] (255) COLLATE Chinese_PRC_CI_AS NULL ,

    [F10] [nvarchar] (255) COLLATE Chinese_PRC_CI_AS NULL ,

    [F11] [nvarchar] (255) COLLATE Chinese_PRC_CI_AS NULL ,

    [F12] [nvarchar] (255) COLLATE Chinese_PRC_CI_AS NULL ,

    [CreateTime] [datetime] NOT NULL CONSTRAINT [DF__veg_Enum__Create__6D2D2E85000] DEFAULT (getdate()),

    [B_date] [datetime] NULL ,

    [E_Date] [datetime] NULL ,

    CONSTRAINT [PK_Veg_Enum_BAk] PRIMARY KEY  CLUSTERED 

    (

        [PKID]

    )  ON [PRIMARY] 

) ON [PRIMARY]

GO

对象: 触发器 dbo.Trigger_SynTradeTypeForInsertOrUpdate  

ALTER        TRIGGER Trigger_SynVeg_EnumTermForInsertOrUpdate

ON veg_Enum

FOR Insert,Update

AS

       BEGIN TRAN

        --update veg_Enum set O_Name=(cast(E_TypeParent as nvarchar(10))+'年'+cast(E_Value as nvarchar(10))+'月')

        -- where  E_Type=2001  and E_ID   in (select E_ID from inserted)

          insert into dbo.Veg_Enum_BAk

                (

                    E_ID,E_Name,E_Type,E_TypeName,

                    E_Value,E_Parent,E_TypeParent,O_ID,

                    O_Name,O_Code,IsActive,F1,

                    F2,F3,F4,F5,

                    F6,F7,F8,F9,

                    F10,F11,F12,CreateTime,

                    B_date,E_Date

                )

            select  E_ID,E_Name,E_Type,E_TypeName,

                E_Value,E_Parent,E_TypeParent,O_ID,

                O_Name,O_Code,IsActive,F1,

                F2,F3,F4,F5,

                F6,F7,F8,F9,

                F10,F11,F12,CreateTime,

                B_date,E_Date

                from Veg_Enum where E_ID in (select E_ID from inserted)

        

     IF (@@ERROR <> 0)

         Begin

         ROLLBACK TRAN

                RAISERROR ('同步数据时出错!', 16, 1)

               Return 

         End

     COMMIT TRAN 

 

GO

SET QUOTED_IDENTIFIER OFF 

GO

SET ANSI_NULLS ON 

GO

 

 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值