SQL触发器更新!SQL触发器更新!

CREATE TRIGGER GasSet_UPDATE
ON [GasSet]
for UPDATE
AS
begin
declare @gasid int
declare @gascode nvarchar(50)
declare @gasname nvarchar(50)
declare @gasunit nvarchar(50)
declare @gasstate int

select @gasid=GasID, @gascode=GasCode,@gasname=GasName, @gasunit=@gasunit, @gasstate=GasState from GasSet

insert into GasDC (GasID,GasCode,GasName,GasUnit,GasState) values (@gasid,@gascode,@gasname,@gasunit,@gasstate)

end

GO

当GasSet表发生更新,进行触发,将GasSet表中的所有记录,必须按照按1到n编号写入到GasDC中,若GasDc有记录先全部删除。
急,在线等!

QQ 523651392 把需求说清楚下,好帮你解决

http://blog.csdn.net/sz_bdqn/article/details/7280863

MySQL触发器没用过,但如果是Oracle,我会写一个before update的触发器,就是在update之前,将旧表迁移。
字段一致的话,可以 INSERT INTO GasDC SELECT * FROM GasSet
原理應該差不多。

创建触发器的语法:
CREATE TRIGGER trigger_name trigger_time trigger_event
ON tbl_name FOR EACH ROW trigger_stmt

你的触发器没有写trigger_time与trigger_event,应该是:
CREATE TRIGGER GasSet_UPDATE AFTER UPDATE
ON [GasSet]

begin end 内容应该包含2个部分:
1.判断GasDc表中是否有记录
2.根据判断结果对GasDc表进行处理
if exists (select 1 from GasDc) then
delete from GasDc;
insert into GasDc(cloumn) select column from GasSet order by 编号 asc;
else
insert into GasDc(cloumn) select column from GasSet order by 编号 asc;

或者不判断直接对GasDc表进行先删后插:
delete from GasDc;
insert into GasDc(cloumn) select column from GasSet order by 编号 asc;

具体根据你自己的需要来定。

参考自:
MySQL触发器(TRIGGER)用法介绍 http://www.data.5helpyou.com/article381.html