SQL Transcation的一些总结分享建站知识
导读:1建站知识相信大家对于SQL Transcation再熟悉不过,它确保了数据库的数据一致性和安全性,尤其在对数据执行增删时,如果发生建设网站公司seo网站优化培训。
1.1.1 摘要 相信大家对于SQL Transcation再熟悉不过,它确保了数据库的数据一致性和安全性,尤其在对数据执行增删时,如果发生异常和错误它就会触发事务回滚,从而确保了我们数据的一致性和安全性,下面我们将通过分四部分介绍事件(Transcation)。 1.1.2 正文 首先让我们通过一个具体的例子介绍Transcation的使用,假如我们的数据库中有一个表UserInfo,它包含三个字段分别为:UserID(自增)、UserName (nvarchar)和LuckyNumber (tinyint),如下图所示:
图2执行存储过程的消息 通过上图我们知道在执行存储过程中发生了异常,而且是由于值“20111111”数据超出了tinyint的范围产生的,现在让我们看一下数据插入的情况。 图4 UserInfo表中数据 我们发现结果和没有添加Transcation处理一样,数据依然插入到表中。这究竟是什么原因呢?也许细心的你已经发现了,我们没有添加事务回滚——ROLLBACK。 但我们究竟要在哪里添加事务回滚(ROLLBACK)呢?或更具体地说:“究竟企业网站建设什么时候我们要触发事务回滚(ROLLBACK)呢”? 由于我们数据插入失败是因为插入过程发生了异常情况,那么我们就要捕获异常和处理异常,那就是TRY/CATCH的设计了,好让我们继续完善我们的存储过程吧。复制代码 代码如下:
-- ============================================= -- Author: JKhuang -- Create date: 12/8/2011 -- Description: Inserts data -- ============================================= Alter PROCEDURE SPAddDataToUserInfo AS BEGIN BEGIN TRY BEGIN TRANSACTION -- SET NOCOUNT ON added to prevent extra result sets from -- interfering with SELECT statements. SET NOCOUNT ON; -- Hard code inserted data. INSERT INTO UserInfo VALUES('JKhuang', 8); INSERT INTO UserInfo VALUES('Jackson', 20111111); INSERT INTO UserInfo VALUES('JKRush', 23); COMMIT TRANSACTION END TRY BEGIN CATCH ROLLBACK TRANSACTION END CATCH END GO
现在我们给存储过程添加了异常处理机制TRY/CATCH(注意:SQLSERVER 2005或之后的版本才支持TRY/CATCH),接下来让我们再执行一次存储过程。 图6 执行存储过程消息-- SET NOCOUNT ON added to prevent extra result sets from -- interfering with SELECT statements. --SET NOCOUNT ON; -- Hard code inserted data. INSERT INTO UserInfo VALUES('JKhuang', 8); INSERT INTO UserInfo VALUES('Jackson', 20111111); INSERT INTO UserInfo VALUES('JKRush', 23); COMMIT TRANSACTION END TRY BEGIN CATCH PRINT 'Error in [SPAddDataToUserInfo]: ' + ERROR_MESSAGE(); ROLLBACK TRANSACTION PRINT ERROR_MESSAGE(); PRINT 'Rolled back successful Transactions: ' + Convert(varchar, @@TRANCOUNT); END CATCH END GO -- ============================================= -- Author: JKhuang -- Create date: 12/8/2011 -- Description: Invokes store procedure to insert data. -- ========================================网seo优化趋势===== ALTER PROCEDURE SPMultiDataToUserInfo AS BEGIN BEGIN TRY BEGIN TRANSACTION PRINT 'In [SPMultiDataToUserInfo] Transactions: ' + Convert(varchar, @@TRANCOUNT); -- SET NOCOUNT ON added to prevent extra result sets from -- interfering with SELECT statements. --SET NOCOUNT ON; -- Hard code inserted data. INSERT INTO UserInfo VALUES('Cris', 1); EXEC SPAddDataToUserInfo INSERT INTO UserInfo VALUES('Ada', 32); COMMIT TRANSACTION END TRY BEGIN CATCH PRINT 'Error in [SPMultiDataToUserInfo]: ' + ERROR_MESSAGE(); ROLLBACK TRANSACTION PRINT ERROR_MESSAGE(); PRINT 'Rolled back successful Transactions: ' + Convert(varchar, @@TRANCOUNT); END CATCH END GO
声明: 本文由我的SEOUC技术文章主页发布于:2023-05-24 ,文章SQL Transcation的一些总结分享建站知识主要讲述标签,标题,SQL网站建设源码以及服务器配置搭建相关技术文章。转载请保留链接: https://www.seouc.com/article/web_6241.html