当前位置: 代码迷 >> Sql Server >> 求触发器,表的备份解决思路
  详细解决方案

求触发器,表的备份解决思路

热度:42   发布时间:2016-04-27 17:52:22.0
求触发器,表的备份
职员信息表:
CREATE   TABLE   [employee](
[employee_id]   [numeric](18,   0)   IDENTITY(1,1)   NOT   NULL,
[employee_name]   [nvarchar](50)   NOT   NULL,
[mailbox]   [nvarchar](50)     NOT   NULL,
[password]   [nvarchar](50)   NOT   NULL,
[sex]   [int]   not   null,
  CONSTRAINT   [PK_employee]   PRIMARY   KEY([employee_id]))

历史表:
CREATE   TABLE   [employee_history](
[employee_id]   [numeric](18,   0)   IDENTITY(1,1)   NOT   NULL,
[employee_name]   [nvarchar](50)   NOT   NULL,
[mailbox]   [nvarchar](50)     NOT   NULL,
[password]   [nvarchar](50)   NOT   NULL,
[sex]   [int]   not   null,
[changedate]   datetime,

每次职员表的修改操作将修改前的数据保存在历史表中,仅添加了一个修改时间列。
环境:Microsoft   SQL   Server   2005

------解决方案--------------------
触发器语句中使用了两种特殊的表:deleted 表和 inserted 表
Deleted 表用于存储 DELETE 和 UPDATE 语句所影响的行的复本。在执行 DELETE 或 UPDATE 语句时,行从触发器表中删除,并传输到 deleted 表中。Deleted 表和触发器表通常没有相同的行。
------解决方案--------------------
历史表employee_id也是自增的啊?
试试
create trigger tu_employee on employee
for update
as
insert into employee_history(employee_name,mailbox,password,sex,changedate)
select employee_name,mailbox,password,sex,getdate()
from deleted
------解决方案--------------------
CREATE TRIGGER tr1 ON employee FOR insert,update,delete AS
delete * from employee_history
insert into employee_history select * from employee
  相关解决方案