喜欢本站并加入收藏
首 页 电脑学园 技术文档 图形图像 办公应用 网页设计 管理资料 PPT模板 方案合同
 位置: 北方教程网 >> 技术文档 >> Mssql >> 正文
   详解T-SQL的十一种设计模式
详解T-SQL的十一种设计模式
[ 作者:佚名   来源:网络整理   点击数:   更新时间:2008-7-2 ]

3、主动执行恢复模式

CREATE PROC procR

AS

IF @@TRANCOUNT <> 0 --启动新事务前先回滚旧事务

ROLLBACK TRAN

DECLARE @err int

BEGIN TRAN

UPDATE customers SET city = 'Dallas'

SELECT 1/0 --设置一个错误

SET @err = @@ERROR

IF @err <> 0

BEGIN

ROLLBACK TRAN

RETURN (@err)

END

COMMIT TRAN

GO

DECLARE @res int

EXEC @res = procR

SELECT @res

注:通过@@TRANCOUNT<>0可知有活动事务,执行ROLLBACK回滚当前活动连接的所有事务。当SQL Server使用连接池时(对WEB服务器而言相当常见),

在实际应用中编写此种逻辑就非常重要。由于一个虚连接可以留下一个打开的事务,该事务会影响使用同一物理连接的后续用户,因此,通过主动地

执行Restorer模式,让代码知道如何保护自己免受“无赖”事务和其他意外残余的影响。 
 重要提示

T-SQL的错误处理结构也并非无懈可击,它经常不是按预期的方式或它应该的方法运行。例如,存在许多严重的足以中断当前命令批处理的错误,当这些错误出现时,它让那些可能紧跟在其后的错误处理代码根本没有机会去执行。因此,当出现问题时,即使使用@@ERROR执行代码检查并调用ROLLBACK,还会有错误禁止ROLLBACK执行。这可能是导致孤立事务存在的根本原因,而且也是在开始一个事务前应检查孤立事务的原因。 

七、PROTOTYPE(原型)

此模式的目标:使用一种原型实例指定要创建对象的类型,并且通过复制原型创建新的对象。

1、最常见的实现方式是SELECT...INTO结构

SELECT *

INTO newCustomers

FROM Customers

SELECT *

INTO newCustomers

FROM Customers

WHERE country='UK'

注:通过指定一个列列表、WHERE子句、GROUP BY或HAVING子句,可在传送过程中修改原型。

2、复制表结构(T-SQL惯例中也曾提过)

SELECT *

INTO newCustomers

FROM Customers

WHERE 1 = 2

SELECT TOP 0 *

INTO newCustomers

FROM Customers

注:通过错误的WHERE条件或不存在的行实现了复制表结构的功能

3、复制表时指定新数据

SELECT IDENTITY(int,1,1) AS CustNo,*

INTO newCustomers

FROM Customers

注:还可指定新列、通过联接选取来自其他表或视图的列、约束或函数等许多的可能性。

八、Singleton(单例)

此模式目标:确保在任何给定时间只存在一个类实例并且提供访问该实例的路径。

严格说,在关系数据库中,对于面向对象类的等价物是表。类的一个实例就是表中的一行。因此,Singleton模式的最显而意见的实现就是确保表中只包含一行。

CREATE TABLE LastCustNo

(LastCustNo int)

GO

INSERT LastCustNo VALUES(1)

GO

CREATE TRIGGER LastCustNoInsert ON LastCustNo

FOR INSERT

AS

IF (SELECT COUNT(*) FROM LastCustNo) > 1

BEGIN

RAISERROR('You May Not insert more than one row into this table!',16,10)

ROLLBACK TRAN

END

GO

INSERT LastCustNo VALUES(2) --由于触发器的原因,插入失败

GO

SELECT * FROM LastCustNo

注:由于触发器的原因,在任何时刻只允许在表中插入一行,如果表中已包含至少一行,在试图插入新的一行时将导致错误并回滚事务。

上一页  [1] [2] [3] [4]  下一页

上一篇: 分析SQL Server数据备份处理过程 下一篇: 没有了
打印此文  收藏此页  关闭窗口  返回顶部
 相关文章  热点文章
 · 安装了windows和linux系统用户如何卸载Linu...
 · 让你的Vista系统自动变换IP地址
 · 九个保障Linux系统安全的注意事项
 · 远程管理Web服务器的方法技巧
 · Win XP开机出现DLL文件错误的解决方法
 
热 点 图 文
教你节省Vist...
使用Windows ...
 · 安装了windows和linux系统用户如...
 · 让你的Vista系统自动变换IP地址
 · 九个保障Linux系统安全的注意事项...
 · 远程管理Web服务器的方法技巧
 · Win XP开机出现DLL文件错误的解决...
 · Win Vista系统自带IIS7.0设置详解...
推 荐 阅 读
Win Vista比X...
用户安全上网...
 · Vista系统组建局域网共享问题分析...
 · 新手如何学会查看计算机的硬件配...
 · 新手必看的二十个电脑使用技巧
 · 没光驱的笔记本电脑如何重新安装...
 · 上网电脑预防病毒的几个方法
 · 新版IE8.0无法输入支付宝密码的解...
 设为首页 - 加入收藏 - 关于本站 - 联系我们 - 广告合作 - 友情链接 - 在线交流 - 
CopyRight© 2006-2009 Eduai.Com All Rights Reserved
在线交流 QQ:524152258 辽ICP备07001851号
免责声明:本站部分资源来自网络,如有侵犯您的版权请通知,我们立即删除。