zhangyitao258
大叔丶
采纳率40%
2016-06-29 02:23 阅读 1.5k
已采纳

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

20

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有记录先全部删除。
急,在线等!

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 复制链接分享

4条回答 默认 最新

  • 已采纳
    bczzm bczzm 2016-06-29 02:55

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

    点赞 评论 复制链接分享
  • u014634816 2824924310 2016-06-29 02:39
  • yu954663801 yu954663801 2016-06-29 02:44

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

    点赞 评论 复制链接分享
  • yicp123 yicp123 2016-06-29 02:49

    创建触发器的语法:
    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

    点赞 评论 复制链接分享

相关推荐