注册 登录
编程论坛 SQL Server论坛

[求助] 触发器能否解决,怎么实现……

cg102 发布于 2010-07-20 10:35, 530 次点击
表A有字段 id (主键) xing_ming(姓名)bian_hao (编号) 、shu_liang (数量)。表B字段与表A一样。仅当表A的“姓名”、“编号”被修改时将修改之前的记录保存到表B。
比如表A为:id     xing_ming   bian_hao    shu_liang   
           00001   张三         001          100

当表A的“姓名”修改为李四时,表B插入一条“001 张三   100”的记录
4 回复
#2
cg1022010-07-20 10:56
这里好冷清啊
#3
jiang119582010-07-20 15:08
用触发器。

create trigger in_t--这里是触发器名
on A --这里是A表名
for update
as
  declare @name varchar,@no varchar
  --从deleted临时表中获得插入的记录行信息
  select @name = name from deleted
  select @no = bian_hao from deleted
  if @name<> (select name from inserted) and @no<> (select bian_hao from inserted)

  select *  into B from deleted

go
#4
aei1352010-07-21 09:48
create trigger tri_test
on A
for update
as
if(columns_updated()&6)>0
insert into B(xing_ming,bian_hao,shu_liang)
select xing_ming,bian_hao,shu_liang from deleted
#5
dearwolf41282010-07-22 18:02
create trigger tri_test
on A
before update         --注意:关键是这里的before ,如果没有,那原始数据就不会保存到变量中去
as
 declare @name varchar,@no varchar,@id int,@shu_liang int
 begin
        select @name = name from deleted
        select @bian_hao = bian_hao from deleted
        select @id= id from deleted
        select @shu_liang = shu_liang from deleted
        if (@name<> (select name from inserted) and @bian_hao<> (select bian_hao from inserted))
           begin
                 insert into 表B values(@id,@name,@bian_hao,@shu_liang)
           end
         
 end
1