大家好!

特价汇

此网站专门收集网上特价商品,信誉好的商品分享给大家,希望大家能够选到自己称心如意的商品

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 ,优点有二;

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

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

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

 

 

 

posted @ 2013-07-22 10:39  阅微草堂  阅读(1090)  评论(0编辑  收藏  举报

  大家好!

特价汇

此网站专门收集网上特价商品,信誉好的商品分享给大家,希望大家能够选到自己称心如意的商品