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 ,优点有二;
一是当没有记录的时候就可以插入一条新的记录,
二是有记录的时候可以更新记录。
最后推广下我的网站 特价汇 谢谢各位!
SQL触发器 inset自学经验的更多相关文章
- 【SQL Server】SQL触发器经验详解
[SQL Server]SQL触发器经验详解 | 浏览: 4314 | 更新: 2013-01-07 15:33 25 11 全文阅读分步阅读 加入杂志 步骤 1 2 3 4 5 6 7 8 ...
- SQL触发器实例讲解
SQL触发器实例1 定义: 何为触发器?在SQL Server里面也就是对某一个表的一定的操作,触发某种条件,从而执行的一段程序.触发器是一个特殊的存储过程. 常见的触发器有三种:分别应用于Inser ...
- SQL触发器实例
SQL触发器实例讲解(本文是来自百度文库) 备注:本人建了一个站特价汇,我想记录每个商品的点击量,然后按照点击量来牌名商品,想要提高效率,所以必须得用触发器,下面是本人在百度文库中的找到的学习资料,分 ...
- SQL触发器中的deleted表和inserted表
SQL触发器中的deleted表和inserted表 在触发器语句中用两个特殊的表一个是deleted表和inserted.它们是通过触发器操作自动创建驻留在内存中的临时表. 描述: Deleted表 ...
- SQL 触发器(学生,课程表,选修表)
SQL 触发器(学生,课程表,选修表) 触发器是一种特殊类型的存储过程,它不由用户通过命令来执行,而是在用户对表执行了插入,删除或修改表中数据等操作时激活执行.可以这样形容:存储过程像一个遥控炸弹,我 ...
- Oracle数据库之PL/SQL触发器
Oracle数据库之PL/SQL触发器 1. 介绍 触发器(trigger)是数据库提供给程序员和数据分析员来保证数据完整性的一种方法,它是与表事件相关的特殊的存储过程,它的执行不是由程序调用,也不是 ...
- 菜鸟级SQL Server21天自学通(文档+视频)
SQL语言的主要功能就是同各种数据库建立联系,进行沟通.按照ANSI(美国国家标准协会)的规定,SQL被作为关系型数据库管理系统的标准语言.SQL语句可以用来执行各种各样的操作,例如更新数据库中的数据 ...
- PB+MS SQL+触发器必须指出
PB+MS SQL+触发器必须指出: 若触发器存在两笔以上的返回值,比方两条update 语句,被误判为数据有改变.存盘不成功. 提示: Row changed between retrieve an ...
- SQL触发器实例(下)
基本语法: Create Trigger [TriggerName] ON [TableName] FOR [Insert][,Delete][,Update] AS --触发器要执行的操作语句. G ...
随机推荐
- ivew使用星星评分
这组件好像有问题,不知道是我们项目环境造成的还是什么,初始化半星不能正常显示,显示的全星. 1.template <div style="display:inline-block;ma ...
- eas之dep的前置脚本和后置脚本
dep的前置脚本和后置脚本,什么时候写,是这样解释的: 前置脚本是在方法前执行,后置脚本是在方法后执行 1.比如保存扩展,如果你要在保存前校验某个字段的值,你要在前置脚本中写,如果要保存后 ...
- lua_自己对“lua函数”知识点的总结
lua_自己对“lua函数”知识点的总结 1.lua函数的定义 --lua中,函数都是function类型的对象.(1)其可以被比较 (2)其可以赋值给一个对象(3)可以传递给函数(4)可以从函数中返 ...
- 38.mapping小例子
主要知识点 初步了解mapping 一,准备数据 插入几条数据,让es自动为我们建立一个索引 PUT /website/article/1 { "post_date" ...
- orcale单行函数之字符函数
- 在tomcat上全手工部署Servlet3.0
从头写java文件的方式,编译成CLASS文件,加强对SERVLET容器的理解. 稍后试试JAR和WAR包. 文件内容(跟以前用IDE的一样): HelloServlet.java: package ...
- ssh无法连接到远端Ubuntu的解决方法
近日,饱受无法远程登录到新安装在VMWare上的Ubuntu虚拟机,现在发现问题所在.故记录此问题的解决方式,以备后用. 一.远程登录虚拟机的准备: Ubuntu虚拟机的联网方式应该选择Bridged ...
- 0x51 线性DP
数据结构没什么好写的..分块和整体二分还有点分学得很懂..果然我还是比较适合这些东西 poj2279 奇怪题,我的想法就是五维记录最边上的一斜排,会M,结果的的确确是锻炼思维的,正解并不是DP2333 ...
- C语言 - 头文件使用案例
源代码分门别类管理,通过头文件. 放置一些函数声明,变量声明,常量定义,宏定义. hotel.h #ifndef HOTEL_H_INCLUDED #define HOTEL_H_INCLUDED # ...
- Linux - shell壳脚本
shell脚本. 壳,充当一个翻译,让计算机能够认识的二进制程序,并将结果翻译给我们. 加在内核上,可以跟内核打交道的壳. 可以通过/etc/shells 来查看. [root@local ~]# c ...