zoukankan      html  css  js  c++  java
  • MSSQL 事务,视图,索引,存储过程,触发器

     

    事务

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

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

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

    开始事务  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

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

    转载请联系



    转载请标明出处

    作者:AaXuan

    地址:http://www.cnblogs.com/Aaxuan

    知识共享许可协议

    本作品采用  知识共享署名 3.0 未本地化版本许可协议  进行许可。

  • 相关阅读:
    细说WebSocket -- Node.js篇
    跨域CORS原理及调用具体示例
    详解5种跨域方式及其原理
    java后台对json格式数据的解析
    serializeArray()和.serialize()的区别、联系
    JSON.parse(),JSON.stringify(),jQuery.parseJSON()的用法
    Jquery 遍历数组之$().each方法与$.each()方法介绍
    JQuery.Ajax()的data参数类型
    并发,并行,进程,线程,同步,异步
    Java之控制反转和依赖注入
  • 原文地址:https://www.cnblogs.com/Aaxuan/p/6219080.html
Copyright © 2011-2022 走看看