事务

事务是一种机制、是一种操作序列,它包含了一组数据库操作命令,这组命令要么全部执行,要么全部不执行。

在数据库系统上执行并发操作时事务是作为最小的控制单元来使用的。这特别适用于多用户同时操作的数据通信系统。例如:订票、银行、保险公司以及证券交易系统等。

如果某一事务成功,则在该事务中进行的所有数据修改均会提交,成为数据库的永久组成部分,如果事务遇到错误且必须取消或回滚,则所有数据修改均会被清除。

开始事务  BEGIN TRANSACTION

提交事务  COMMIT TRANSACTION

回滚事务  ROLLBACK TRANSACTION

--开始事务
begin transaction
declare @errorSum int    --定义变量,用于累计事务执行过程中的错误
--转帐
update bank set currentMoney=currentMoney-800 where customerName='张三'
set @errorSum=@errorSum+@@error  --累计是否有错误
update bank set currentMoney=currentMoney+800 where customerName='李四'
set @errorSum=@errorSum+@@error  --累计是否有错误

print '查看转帐事务过程中的余额'
select * from bank

--根据是否有错误,确定事务是提交还是回滚
if @errorSum>0
    begin
        print '交易失败,回滚事务.'
        rollback transaction
    end
else
    begin
        print '交易成功,提交事务,写入硬盘,永久保存!'
        commit transaction
    end
go

索引

索引提供指向存储在表的指定列中的数据值的指针,然后根据指定的顺序对这些指针排序。

索引使数据库程序无需对整个表进行扫描,就可以在其中找到所需数据。

索引依赖于数据库的表,作为表的一个组成部分,一旦创建后,又数据库系统自身进行维护。

视图

视图和表类似,是一张虚拟表,通常是作为一个或多个表的行或列的子集创建的,视图只供查询,数据不可更改,查询数据来源于我们建立的实体表。

存储过程

存储过程的概念类似于函数,它是SQL语句和控制流语句的预编译集合。

存储过程存储在数据库内,可由应用程序调用。

存储过程的优点显而易见:封装复杂操作,节省编译优化时间,实现代码重用。

CREATE PROC 存储过程名

AS

BEGIN

SET NOCOUNT ON

--SQL语句

END

带有输出参数的存储过程,如果参数后面带有output,则表示此参数为输出参数,否则是普通的输入参数,输入参数可以带有默认值

CREATE PROC 存储过程名

@变量名 数据格式[=默认值] [OUTPUT]

AS

BEGIN

SET NOCOUNT ON

--SQL语句

END

调用存储过程:EXEC  存储过程名 [参数]

--调用后返回通过考试的学生人数,以供其他sql语句调用

CREATE PROCEDURE proc_withOutputpara

@subject varchar(10)='SQL',  --接受参数,带默认参数,变量之间带逗号

@count int output  --输出参数

AS

SELECT @count=count(*) FROM students S,Mark SC,course C

WHERE S.sID=SC.sID AND SC.cID=C.cID

AND C.cNAME='C#' AND SC.SCore<60

GO

--调用存储过程

DECLARE @count int,@sub varchar(10)  --声明变量

SET @sub='C#'

EXEC  proc_withOutputpara @sub,@count=@count output

PRINT @sub+'考试不及格的共有'+convert(varchar(2),@count)+'人'

GO

触发器

触发器是一种特殊类型的存储过程。

触发器是当对某一个表进行操作。诸如:update、insert、delete这些操作的时候,系统会自动调用执行该表上对应的触发器。

触发器的主要作用是实现由主键和外键所不能保证的复杂的参照完整性和数据的一致性。

CREATE TRIGGER 触发器名称

ON 表名

FOR insert/delete/update

AS

--SQL语句

GO

博客园hoojo博主关于触发器的详细介绍:http://www.cnblogs.com/hoojo/archive/2011/07/20/2111316.html

博主初学,有错还望各位大神指出。

转载请联系

MSSQL 事务,视图,索引,存储过程,触发器的更多相关文章

  1. 2020重新出发,MySql基础,MySql视图&索引&存储过程&触发器

    @ 目录 视图是什么 视图的优点 1) 定制用户数据,聚焦特定的数据 2) 简化数据操作 3) 提高数据的安全性 4) 共享所需数据 5) 更改数据格式 6) 重用 SQL 语句 MySQL创建视图 ...

  2. MySQL视图 索引 存储过程 触发器 函数

       视图: 也就是一个虚拟表(不是真实存在的),它的本质就是根据SQL语句获取动态的数据集,并为其命名.用户使用时只需要使用命名的视图即可获取结果集,并可以当做表来使用.它的作用就是方便查询操作,减 ...

  3. 第五章 MySQL事务,视图,索引,备份和恢复

    第五章 MySQL事务,视图,索引,备份和恢复 一.事务 1.什么是事务 事务是一种机制,一个操作序列,它包含了一组数据库操作命令,并且把所有的命令作为一个整体一起向系统提交或撤销操作请求.要么都执行 ...

  4. Python全栈开发之MySQL(三)视图,存储过程触发器,函数,事务,索引

    一:视图 1:什么是视图? 视图是指存储在数据库中的查询的SQL语句,具有简单.安全.逻辑数据独立性的作用及视点集中简化操作定制数据安全性的优点.视图包含一系列带有名称的列和行数据.但是,视图并不在数 ...

  5. SqlServer数据库字典--表.视图.函数.存储过程.触发器.主键.外键.约束.规则.sql

    SELECT DISTINCT       TOP 100 PERCENT isnull(p.name,'') AS 父对象, o.xtype,       CASE o.xtype WHEN 'C' ...

  6. 关于MySQL 事务,视图,索引,数据库备份,恢复

      /*创建数据库*/ CREATE DATABASE `mybank`;/*创建表*/USE mybank;CREATE TABLE `bank`(    `customerName` CHAR(1 ...

  7. Sql Server数据库之事务,视图,索引

    一.事务的定义 事务是一种机制,包含一组操作指令,并将所有的命令作为一个整体一起向系统提交或撤销操作请求(要么都执行,要么都不执行) 二.事务的分类 显式事务:用Begin TRANSCATION开始 ...

  8. MySQL 系列(三)你不知道的 视图、触发器、存储过程、函数、事务、索引、语句

    第一篇:MySQL 系列(一) 生产标准线上环境安装配置案例及棘手问题解决 第二篇:MySQL 系列(二) 你不知道的数据库操作 第三篇:MySQL 系列(三)你不知道的 视图.触发器.存储过程.函数 ...

  9. MSSQL 视图/事务(TRAN[SACTION])/存储过程(PROC[EDURE])/触发器(TRIGGER )

    --视图 视图是一张虚拟表,它表示一张表的部分数据或多张表的综合数据,其结构和数据是建立在对表的查询基础上 视图在操作上和数据表没有什么区别,但两者的差异是其本质是不同: 数据表是实际存储记录的地方, ...

  10. Oracle-序列-存储过程-视图-索引-触发器

    课程介绍 1. 约束(掌握) 2. 序列(掌握) 3. 索引(掌握) 4. 视图(掌握) 5. 存储过程(掌握) 6. 自定义函数(掌握) 7. 触发器(掌握) 数据库对象的命名规则 1.对象名称必须 ...

随机推荐

  1. ABP文档 - 异常处理

    文档目录 本节内容: 简介 启用错误处理 非AJAX请求 显示异常 UserFriendlyException Error 模型 AJAX 请求 异常事件 简介 这个文档针对Asp.net Mvc和W ...

  2. JavaScript 开发规范

    本篇主要介绍JS的命名规范.注释规范以及框架开发的一些问题. 目录 1. 命名规范:介绍变量.函数.常量.构造函数.类的成员等等的命名规范 2. 注释规范:介绍单行注释.多行注释以及函数注释 3. 框 ...

  3. 【WCF】自定义错误处理(IErrorHandler接口的用法)

    当被调用的服务操作发生异常时,可以直接把异常的原始内容传回给客户端.在WCF中,服务器传回客户端的异常,通常会使用 FaultException,该异常由这么几个东东组成: 1.Action:在服务调 ...

  4. [.NET] C# 知识回顾 - Event 事件

    C# 知识回顾 - Event 事件 [博主]反骨仔 [原文]http://www.cnblogs.com/liqingwen/p/6060297.html 序 昨天,通过<C# 知识回顾 - ...

  5. C# 索引器,实现IEnumerable接口的GetEnumerator()方法

    当自定义类需要实现索引时,可以在类中实现索引器. 用Table作为例子,Table由多个Row组成,Row由多个Cell组成, 我们需要实现自定义的table[0],row[0] 索引器定义格式为 [ ...

  6. angluarjs2项目生成内容合并到asp.net mvc4项目中一起发布

    应用场景 angular2(下文中标注位NG2)项目和.net mvc项目分别开发,前期采用跨域访问进行并行开发,后期只需要将NG2项目的生产版本合并到.net项目. NG2项目概述 ng2项目采用的 ...

  7. 【算法】(查找你附近的人) GeoHash核心原理解析及代码实现

    本文地址 原文地址 分享提纲: 0. 引子 1. 感性认识GeoHash 2. GeoHash算法的步骤 3. GeoHash Base32编码长度与精度 4. GeoHash算法 5. 使用注意点( ...

  8. HttpPost过程中使用的URLEncoder.encode(something, encode)

    URLEncoder.encode("刘美美", "utf-8").toString()       =     %E5%88%98%E7%BE%8E%E7%B ...

  9. Linux命令【第三篇】

    执行下面命令时发现提示需要输入密码,请问提示输入的密码是哪个用户的密码. [test@oldboy ~]$ sudo su - oldboy 解答: 输入当前执行命令test账户的密码. 相关说明: ...

  10. 我正在使用Xamarin的跨平台框架—Xamarin.Android回忆录

    一.缘起 在自己给别家公司做兼职外包的时候,已经明确知道外包的活不是那么好干的,一般在经历了初期热血澎湃的激情后,逐渐冷淡,愤怒,再冷淡,再愤怒…,听上去好像高潮迭起,但令人尴尬的是,这高潮迭起我们都 ...