美文网首页
part7. 事务处理维护DB完整性|游标的使用

part7. 事务处理维护DB完整性|游标的使用

作者: katelin | 来源:发表于2019-01-05 18:18 被阅读0次

    第20课 管理事务处理

    why?
    确保成批的SQL操作要么完全执行,要么完全不执行,来维护数据库的完整性。
    what?

    事务:指一组SQL语句
    回退:指撤销指定的SQL语句的过程
    提交:指将未存储的SQL语句结果写入数据库表
    保留点:指事务处理中设置的临时占位符,可以对它发布回退
    事务处理可以用来管理INSERT、UPDATE、DELETE语句,不能回退SELECT、CREATE、或DROP

    how?

    SQL Server:

    BEGIN TRANSACTION
    ...
    COMMIT TRANSACTION
    

    MySQL:

    START TRANSACTION
    ...
    

    Oracle:

    SET TRANSACTION
    
    1. ROLLBACK
    DELETE FROM Orders;
    ROLLBACK;
    
    1. COMMIT
      隐式提交:一般的SQL语句都是针对数据库表直接执行和编写的,这就是所谓的隐式提交,即提交操作是自动进行的。
      在事务处理块中,显示提交COMMIT。
    2. 使用保留点
      MySQL/Oracle:
    #创建占位符
    SAVEPOINT delete1;
    ...
    # 回退
    ROLLBACK TO delete1;
    

    SQL Server:

    # 创建保留点
    SAVE TRANSACTION delete1;
    ...
    # 回退
    ROLLBACK TRANSACTION delete1;
    
    BEGIN TRANSACTION
    ...
    SAVE TRANSACTION StartOrder;
    ...
    # 如果@@ERROR返回一个非0值,表示有错误发生,事务回退到保留点
    IF @@ERROR <> 0 ROLLBACK TRANSACTION StartOrder;
    ...
    IF @@ERROR <> 0 ROLLBACK TRANSACTION StartOrder;
    COMMIT TRANSACTION
    

    第21课 使用游标

    what?why?
    游标(cursor)是一个存储在DBMS服务器上的数据库查询,它不是一条SELECT语句,而是被该语句检索出来的结果集。在存储了游标之后,应用程序可以根据需要滚动或浏览其中的数据。

    how?
    创建:

    DECLARE CustCursor CURSOR
    FOR
    SELECT * FROM Customers
    WHERE cust_email IS NULL;
    

    使用:

    OPEN CURSOR CustCursor
    

    用FETCH语句访问游标数据,FETCH指出要检索哪些行,从何处检索它们以及将他们放于何处(如变量名)

    DECLARE @cust_id CHAR(10),
            @cust_name CHAR(50)
    OPEN CustCursor
    FETCH NEXT FROM CustCursor
        INTO @cust_id, @cust_name
    WHILE @@FETCH_STATUS=0
    BEGIN
    FETCH NEXT FROM CustCursor
          INTO @cust_id, @cust_name
    ...
    END
    CLOSE CustCursor
    

    关闭:

    CLOSE CustCursor
    DEALLOCATE CURSOR CustCursor
    

    相关文章

      网友评论

          本文标题:part7. 事务处理维护DB完整性|游标的使用

          本文链接:https://www.haomeiwen.com/subject/vrllrqtx.html