mssql

推荐列表 站点导航

当前位置:首页 > 数据库 > mssql >

SQL Transcation的一些总结分享

来源:网络整理  作者:网络  发布时间:2020-12-10 06:54
相信大家对于SQL Transcation再熟悉不过,它确保了数据库的数据一致性和安全性,尤其在对数据执行增删时,如果发生...
BEGIN TRY

但我们究竟要在哪里添加事务回滚(ROLLBACK)呢?或更具体地说:“究竟什么时候我们要触发事务回滚(ROLLBACK)呢”?

SQL Transcation的一些总结分享


1.1.1 摘要
END TRY
BEGIN CATCH

-- SET NOCOUNT ON added to prevent extra result sets from

图2执行存储过程的消息
-- Hard code inserted data.
-- interfering with SELECT statements.
图6 执行存储过程消息
首先让我们通过一个具体的例子介绍Transcation的使用,假如我们的数据库中有一个表UserInfo,它包含三个字段分别为:UserID(自增)、UserName (nvarchar)和LuckyNumber (tinyint),如下图所示:

复制代码 代码如下:

BEGIN TRANSACTION
INSERT INTO UserInfo VALUES('Jackson', 20111111);
-- Create date: 12/8/2011
END CATCH

通过上图我们知道在执行存储过程中发生了异常,而且是由于值“20111111”数据超出了tinyint的范围产生的,现在让我们看一下数据插入的情况。
1.1.2 正文
SET NOCOUNT ON;
END
由于我们数据插入失败是因为插入过程发生了异常情况,那么我们就要捕获异常和处理异常,那就是TRY/CATCH的设计了,好让我们继续完善我们的存储过程吧。
图4 UserInfo表中数据

INSERT INTO UserInfo VALUES('JKhuang', 8);

相信大家对于SQL Transcation再熟悉不过,它确保了数据库的数据一致性和安全性,尤其在对数据执行增删时,如果发生异常和错误它就会触发事务回滚,从而确保了我们数据的一致性和安全性,下面我们将通过分四部分介绍事件(Transcation)。
ROLLBACK TRANSACTION



INSERT INTO UserInfo VALUES('JKRush', 23);
AS
现在我们给存储过程添加了异常处理机制TRY/CATCH(注意:SQLSERVER 2005或之后的版本才支持TRY/CATCH),接下来让我们再执行一次存储过程。

SQL Transcation的一些总结分享

Alter PROCEDURE SPAddDataToUserInfo
-- Author: JKhuang
-- =============================================
COMMIT TRANSACTION
-- Description: Inserts data

SQL Transcation的一些总结分享

BEGIN
-- =============================================

GO
我们发现结果和没有添加Transcation处理一样,数据依然插入到表中。这究竟是什么原因呢?也许细心的你已经发现了,我们没有添加事务回滚——ROLLBACK。


相关热词:

本站内容来源于网络,如有侵权请与我们联系,我们会及时删除,我们深感抱歉!
注:本站所有信息仅供用于网络技术学习参考,学习中请遵循相关法律法规!

本文地址: https://v30.fanwenzhu.com/sql/mssql/2077.shtml

Copyright © www.juheyunku.com      关于 | 合作 | 声明 | 联系 | 更新 | 地图 | Tags

SQL Transcation的一些总结分享

2020-12-10 编辑:网络

BEGIN TRY

但我们究竟要在哪里添加事务回滚(ROLLBACK)呢?或更具体地说:“究竟什么时候我们要触发事务回滚(ROLLBACK)呢”?

SQL Transcation的一些总结分享


1.1.1 摘要
END TRY
BEGIN CATCH

-- SET NOCOUNT ON added to prevent extra result sets from

图2执行存储过程的消息
-- Hard code inserted data.
-- interfering with SELECT statements.
图6 执行存储过程消息
首先让我们通过一个具体的例子介绍Transcation的使用,假如我们的数据库中有一个表UserInfo,它包含三个字段分别为:UserID(自增)、UserName (nvarchar)和LuckyNumber (tinyint),如下图所示:

复制代码 代码如下:

BEGIN TRANSACTION
INSERT INTO UserInfo VALUES('Jackson', 20111111);
-- Create date: 12/8/2011
END CATCH

通过上图我们知道在执行存储过程中发生了异常,而且是由于值“20111111”数据超出了tinyint的范围产生的,现在让我们看一下数据插入的情况。
1.1.2 正文
SET NOCOUNT ON;
END
由于我们数据插入失败是因为插入过程发生了异常情况,那么我们就要捕获异常和处理异常,那就是TRY/CATCH的设计了,好让我们继续完善我们的存储过程吧。
图4 UserInfo表中数据

INSERT INTO UserInfo VALUES('JKhuang', 8);

相信大家对于SQL Transcation再熟悉不过,它确保了数据库的数据一致性和安全性,尤其在对数据执行增删时,如果发生异常和错误它就会触发事务回滚,从而确保了我们数据的一致性和安全性,下面我们将通过分四部分介绍事件(Transcation)。
ROLLBACK TRANSACTION



INSERT INTO UserInfo VALUES('JKRush', 23);
AS
现在我们给存储过程添加了异常处理机制TRY/CATCH(注意:SQLSERVER 2005或之后的版本才支持TRY/CATCH),接下来让我们再执行一次存储过程。

SQL Transcation的一些总结分享

Alter PROCEDURE SPAddDataToUserInfo
-- Author: JKhuang
-- =============================================
COMMIT TRANSACTION
-- Description: Inserts data

SQL Transcation的一些总结分享

BEGIN
-- =============================================

GO
我们发现结果和没有添加Transcation处理一样,数据依然插入到表中。这究竟是什么原因呢?也许细心的你已经发现了,我们没有添加事务回滚——ROLLBACK。


本站内容来源于网络,如有侵权请与我们联系,我们会及时删除,我们深感抱歉!
注:本站所有信息仅供学习参考!
本文地址为 https://v30.fanwenzhu.com/sql/mssql/2077.shtml

相关文章

风云图片

推荐阅读

返回mssql频道首页