• SQL触发器 inset自学经验


    本人建立了一个特价汇网站,想要记录每个商品的点击量和整个网站的访问量,于是就想用sql 触发器来实现

     drop trigger tgr_cg_records_update_column
     create trigger tgr_cg_records_update_column
    on cg_records
        instead of  insert --插入触发
    as
        --定义变量
        declare @gid int, @record varchar(20), @has int;
        --在inserted表中查询已经插入记录信息
        select @gid = gid, @record=record from inserted;
        select  @record=record from cg_records where gid=@gid;--查找表中此商品的记录
        set @record = @record + 1;
         print @gid;
        select @has=count(*) from cg_records where gid=@gid --查找是否有此条记录
        print @has;
        if(@has=0)--如果没有就插入一条,且初始化其点击量为1
        insert into cg_records(gid,record) values(@gid, @record);
         if(@has>=0)--如果有记录就将此条记录的点击量加一保存
         update cg_records set record =@record where gid= @gid;

    测试:
          insert into cg_records (gid,record)values(7,0);
          select * from cg_records

    结果:测试成功,投入使用

    心得:之前想用update触发器,问题有二;

    一是不能获取到deleted临时表中的gid,

    二是如果有新的记录要插入的时候不能通过此触发器来完成,需要另外插入一条记录到表中

    所以想到用insert 加instead of ,优点有二;

    一是当没有记录的时候就可以插入一条新的记录,

    二是有记录的时候可以更新记录。

    最后推广下我的网站 特价汇 谢谢各位!

  • 相关阅读:
    石墨烯
    spring 安装
    orm 对象关系映射
    刷机问题
    环境必备
    spring 例子
    刷系统——黑屏问题
    android 文件下载
    c# 事件处理
    回忆测试广告理论
  • 原文地址:https://www.cnblogs.com/yuxiaohui/p/3204852.html
Copyright © 2020-2023  润新知