本人创建了一个特价汇网站,想要记录每一个商品的点击量和整个网站的访问量,因而就想用sql 触发器来实现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网站
结果:测试成功,投入使用spa
心得:以前想用update触发器,问题有二;get
一是不能获取到deleted临时表中的gid,变量
二是若是有新的记录要插入的时候不能经过此触发器来完成,须要另外插入一条记录到表中date
因此想到用insert 加instead of ,优势有二;select
一是当没有记录的时候就能够插入一条新的记录,查询
二是有记录的时候能够更新记录。mail
最后推广下个人网站 特价汇 谢谢各位!