事务

事务:保证多个操作全部成功,否则全部失败,这处机制就是事务
思考:下了个订单,但是在保存详细信息时出错了,这样可以成功吗?
数据库中的事务:代码全都成功则提交,如果有某一条语句失败则回滚,整体失败
事务操作:
begin transaction--开始事务
comit transaction--提交,没错后执行
rollback transaction--回滚,出错后执行,执行了的操作会回滚,不会生效
用法:声明一个变量,记录错误信息,最终根据变量值是否大于0,进行提交或回滚

示例:模拟转账操作:一个账户扣钱,一个账户加钱

begin transaction
declare @sumError int=0
update bank set balance=balance-1000 where cid='0001'
set @sumError=@sumError+@@Error
update bank set balance=balance+1000 where cid='0002'
set @sumError=@sumError+@@Error
if(@sumError)
begin
     ---失败了
     rollback transaction
end
else
begin
     ---成功了
     comit transaction
end

存储过程

就是一个函数,用于存储一段处理代码
好处:
完成代码的封装,实现代码重用;
安全
方便应用程序与数据库间通信,不用传大量sql语句过程,而只用传一个存储过程名称过来,简单方便
系统存储过程(在界面中打开看一看)
自定义存储过程
create proc usp_test1
参数列表
as
自定义代码段
调用执行:exec 存储过程名称

create proc usp_TwoNumberAdd 
@num1 int,
@num2 int
as 
begin
   select @num1+@num2
end
----存储过程传参数  有几种方式
----第一种方式
declare @n1 int=45,@n2 int=43
exec usp_TwoNumberAdd @num1=@n1,@num2=@n2
----第二种方式
exec usp_TwoNumberAdd 21,20

---模糊查询 存储过程 用户传入 宇,和年龄>20返回来有多少条数据,并把这些数据显示出来

create proc usp_SlectStuByNameAndAge
@name nvarchar(10),--名字
@age int ,--年龄
@count int output --条数
as 
begin
    set @count=(select count(*) from Student where StuName like @name+'%' and StuAge>@age)
    select * from Student where StuName like @name+'%' and StuAge>@age
end
declare @ct int
exec usp_SlectStuByNameAndAge '宇',15,@ct output
select @ct

分页的存储过程

---第几页
---每页多少条
---总页数返回来
create proc usp_pageUser
@page int,--页数
@count int,--条数
@sumPage int output--总页数
as 
begin
     set @sumPage=(CEILING((select count(*) from TblUsers)*1.0/@count))--总页数
     select * from 
       (select 编号=ROW_NUMBER()over(order by AutoId),* from TblUsers)as tu
       where tu.编号 between (@page-1)*@count+1 and @page*@count
end

---第4页,每页6条
declare @i int
exec usp_pageUser 4,6,@i output
select @i

触发器

作用:对表进行增、删、改操作时,自动进行一个操作

根据触发机制不同,分为:after触发器,instead of替换触发器
创建触发器:
create trigger 名称 
On 表名
[After|instead of] [insert|delete|update]
As
Begin

end
两个临时表:inserted、deleted
示例:删除分公司时,将该分公司的所有部门都删除
建议:对于性能影响太大,所以要慎重使用

MSSQLServer基础07(事务,存储过程,分页的存储过程,触发器)的更多相关文章

  1. MySQL基础(二):视图、触发器、函数、事务、存储过程

    一.视图 视图是一个虚拟表(非真实存在),其本质是[根据SQL语句获取动态的数据集,并为其命名],用户使用时只需使用[名称]即可获取结果集,并可以将其当作表来使用. 视图和上一篇学到的临时表搜索类似. ...

  2. 总结: MySQL(基础,字段约束,索引,外键,存储过程,事务)操作语法

    1. 显示数据库列表 show databases; # 查看当前所有数据库 show databases \G   #以行的方式显示 2. 在命令行中,执行sql语句 mysql -e 'show ...

  3. mysql基础教程(四)-----事务、视图、存储过程和函数、流程控制

    事务 概念 事务由单独单元的一个或多个SQL语句组成,在这 个单元中,每个MySQL语句是相互依赖的.而整个单独单 元作为一个不可分割的整体,如果单元中某条SQL语句一 旦执行失败或产生错误,整个单元 ...

  4. SQL存储过程分页(通用的拼接SQL语句思路实现)

    多表通用的SQL存储过程分页 案例一: USE [Community] GO /****** Object: StoredProcedure [dbo].[Common_PageList] Scrip ...

  5. 存储过程 分页【NOT IN】和【>】效率大PK 千万级别数据测试结果

    use TTgoif exists (select * from sysobjects where name='Tonge')drop table Tongecreate table Tonge( I ...

  6. oracle 存储过程分页

    将分页的存储过程封装到包中,包规范 create or replace package pkg_query as type cur_query is ref cursor; PROCEDURE prc ...

  7. SQL Server 的通用分页显示存储过程

    建立一个 Web 应用,分页浏览功能必不可少.这个问题是数据库处理中十分常见的问题.经典的数据分页方法是:ADO 纪录集分页法,也就是利用ADO自带的分页功能(利用游标)来实现分页.但这种分页方法仅适 ...

  8. SQL Server 2008 存储过程,带事务的存储过程(创建存储过程,删除存储过程,修改存储过

    SQL Server 2008 存储过程,带事务的存储过程(创建存储过程,删除存储过程,修改存储过     存储过程 创建存储过程 use pubs --pubs为数据库 go create proc ...

  9. 存储过程分页 Ado.Net分页 EF分页 满足90%以上

    存储过程分页: create proc PR_PagerDataByTop @pageIndex int, @pageSize int, @count int out as select top(@p ...

随机推荐

  1. 文件上传下载struts2

    上传方式1: // 保存上传的文件 public boolean saveFile(File file, String fileName) throws IOException { File newF ...

  2. execute连接 类型

    set rs=server.createobject("adodb.recordset") sql="select top 10 id,name from tablena ...

  3. linux终端io笔记

    简介 终端的两种工作模式:以行为单位的工作模式,以字符数或时间为单位自定义模式 终端判断函数: int isatty(int fd) 终端属性的获取与设置: int tcgetattr(int fd, ...

  4. substr,mb_substr,iconv_substr,array_slice

    通过一个例子来看其关系 /** +---------------------------------------------------------- * 字符串截取,支持中文和其他编码 +----- ...

  5. 用 HTML 编写博客栏目

    “生活中不是缺少美,而是缺少发现美的眼睛. -----罗丹 在之前阅读师哥师姐们博客的时候,尤其是那些感觉非常优秀博客的时候就注意到了一个东西..... ----------------------- ...

  6. Windows下将txt导入MySQL及远程连接设置

    1.修改字符编码,全部修改为gbk.这样修改,重启后又会恢复默认值. show variables like '%char%'; set character_set_database=gbk; 其中, ...

  7. 如何编写好的jQuery代码

    本文就是自己看,如果您不小心进到了这里,请看源处,是这个作者翻译的:http://blog.sae.sina.com.cn/archives/4157 讨论jQuery和javascript性能的文章 ...

  8. Linux下卸载和安装MySQL[rpm包]

    一.卸载原来的mysql: 卸载一: 输入: #rpm -qa | grep -i mysql 显示: mysql-libs-5.1.52-1.el6_0.1.i686 卸载方法: yum -y re ...

  9. MySQL中的配置参数interactive_timeout和wait_timeout(可能导致过多sleep进程的两个参数)

    1)interactive_timeout:参数含义:服务器关闭交互式连接前等待活动的秒数.交互式客户端定义为在mysql_real_connect()中使用CLIENT_INTERACTIVE选项的 ...

  10. js图片旋转

    <script type="text/javascript" language="javascript"> function rotate(id, ...