数据库中的事务、存储过程和触发器的简单使用
什么是事务(Transaction)
指访问并可能更新数据库中各种数据项的一个程序执行单元(unit)--也就是由多个sql语句组成,必须作为一个整体执行
这些sql语句作为一个整体一起向系统提交,要么都执行、要么都不执行
语法步骤:
开始事务:BEGIN TRANSACTION
事务提交:COMMIT TRANSACTION
事务回滚:ROLLBACK TRANSACTION
判断某条语句执行是否出错:
全局变量@@ERROR;
@@ERROR只能判断当前一条T-SQL语句执行是否有错,为了判断事务中所有T-SQL语句是否有错,我们需要对错误进行累计;
例:SET @errorSum=@errorSum+@@error
存储过程---就像数据库中运行方法(函数)
和C#里的方法一样,由存储过程名/存储过程参数组成/可以有返回结果。
前面学的if else/while/变量 等,都可以在存储过程中使用
优点:
执行速度更快
允许模块化程序设计
提高系统安全性
减少网络流通量
系统存储过程
由系统定义,存放在master数据库中
名称以“sp_”开头或”xp_”开头
自定义存储过程
由用户在自己的数据库中创建的存储过程
系统存储过程
说明
sp_databases
列出服务器上的所有数据库。
sp_helpdb
报告有关指定数据库或所有数据库的信息
sp_renamedb
更改数据库的名称
sp_tables
返回当前环境下可查询的对象的列表
sp_columns
回某个表列的信息
sp_help
查看某个表的所有信息
sp_helpconstraint
查看某个表的约束
sp_helpindex
查看某个表的索引
sp_stored_procedures
列出当前环境中的所有存储过程。 sp_password
添加或修改登录帐户的密码。
sp_helptext
显示默认值、未加密的存储过程、用户定义的存储过程、触发器或视图的实际文本。
定义存储过程的语法
CREATE PROC[EDURE] 存储过程名
@参数 数据类型 = 默认值 OUTPUT,
@参数n 数据类型 = 默认值 OUTPUT
AS
SQL语句
参数说明:
参数可选
参数分为输入参数、输出参数
输入参数允许有默认值
EXEC 过程名 [参数]
触发器是一种特殊类型的存储过程,它不同于前面介绍过的一般的存储过程。
一般的存储过程通过存储过程名称被直接调用,而触发器主要是通过事件进行触发而被执行。
触发器是一个功能强大的工具,在表中数据发生变化时自动强制执行。触发器可以用于SQL Server约束、默认值和规则的完整性检查,还可以完成难以用普通约束实现的复杂功能。
那究竟何为触发器?在SQL Server里面也就是对某一个表的一定的操作,触发某种条件,从而执行的一段程序。触发器是一个特殊的存储过程。
常见的触发器有三种:分别应用于Insert , Update , Delete 事件
常用语法
CREATE TRIGGER triggerName ON Table for UPDATE|INSERT|DELETE AS begin … end 触发器-更新 CREATE TRIGGER testForFun ON dbo.Category for UPDATE AS begin select * from book end update Category set c_name = 'Android2' where c_id=3 触发器-删除 CREATE TRIGGER testForDel ON dbo.Category for delete AS begin select * from book end delete Category set c_name = 'Android2' where c_id=3
最新内容请见作者的GitHub页:http://qaseven.github.io/
低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
《OpenGL ES应用开发实践指南:Android卷》—— 1.2 创建第一个程序
本节书摘来自华章出版社《OpenGL ES应用开发实践指南:Android卷》一 书中的第1章,第1.2节,作者:(美)Kevin Brothaler ,更多章节内容可以访问云栖社区“华章计算机”公众号查看。 1.2 创建第一个程序 我们已经安装并配置了工具,现在来创建第一个OpenGL程序。这个程序非常简单:它要做的只是初始化OpenGL并不停地清空屏幕;要得到一个可以实际做点什么的OpenGL程序,这是我们需要的最少的内容。Joe 问:为什么要不停地清空屏幕如果已经在每一帧的屏幕上都绘制了内容,清空屏幕好像是浪费的,那为什么还要这样做呢?回到一切都用软件渲染的时代,清空屏幕总是一种浪费;开发者总是要假定所有东西都已经绘制好了,并能覆盖前一帧的内容,而不必清空它,这样就能达到优化的目的;可以节省清空屏幕的处理时间。有时,这种优化会导
- 下一篇
IOS漏洞频出!世界上真的存在没有漏洞的手机吗?
CVE-2016-0844,这串毫不性感的代码是一个漏洞的名字。 通过这个漏洞,黑客可以拿到 Android 手机内核最高权限,在主人不知情的情况下翻看查看聊天记录、银行卡密码、随时静默拍照、向任意号码发信息、打电话。 为此,谷歌向这个漏洞的发现者——冰刃实验室——发去了一封致谢函。如果你是网络安全爱好者,冰刃(IceSword)这个字眼一定在你心中占据着一席神坛。2004年,这款几乎可以查杀所有木马的软件在圈子里声名鹊起,引起了各大网络安全公司的注意。而它的作者,竟然是一位在校的学生。他就是潘剑锋。 冰刃的简洁和灵性散发出一种出只有黑客们才可以欣赏的美。如今在各大论坛上,还依然有诸多仰慕者追随着潘神的名号,传扬着他的传说。而潘神却低调地走出光环之外,修炼至今。 冰刃实验室,正是他的回归。 【IceSword 冰刃软件截图】 {潘神的迷宫} 潘剑锋坐在雷锋网(搜索“雷锋网”公众号关注)记者对面,一脸平静地说,其实这个漏洞并没有太多可说的,只是一个新的“系统提权漏洞”而已。 事实上,“系统提权漏洞”是拿到Root权限的最后也是最难的一跃,在谷歌的评价体系里毫无争议地属于高危级别漏洞。根据...
相关文章
文章评论
共有0条评论来说两句吧...