第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
- ROLLBACK
DELETE FROM Orders;
ROLLBACK;
- COMMIT
隐式提交:一般的SQL语句都是针对数据库表直接执行和编写的,这就是所谓的隐式提交,即提交操作是自动进行的。
在事务处理块中,显示提交COMMIT。 - 使用保留点
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
网友评论