一.修改语句的增强 UPDATE test SET tname.WRITE('one hundred and two', 9, 3) WHERE tid =102 在2005中增强了update方法,这是修改test表的列tname WRITE方法是把tname这个列中从字符串9开始 把3个长的字符串改为one hundred and two 二、异常的捕获 可以捕获过去会导致批处理终止和事务的错误,但是不能处理连接中断错误和硬件错误等 --Using the try..catch.. construct and invoking a run-time error SET XACT_ABORT of 这个打开捕获异常的开关 ,默认是关闭的 BEGIN TRY BEGINTRAN INSERTINTO score VALUES (102,78) LOGIN login1
丰富的数据类型 Richer Data Types 1、varchar(max)、nvarchar(max)和varbinary(max)数据类型最多可以保存2GB的数据,可以取代text、ntext或image数据类型。 CREATETABLE myTable ( id INT, content VARCHAR(MAX) ) 2、XML数据类型 XML数据类型允许用户在SQL Server数据库中保存XML片段或文档。 错误处理 Error Handling 1、新的异常处理结构 2、可以捕获和处理过去会导致批处理终止的错误 前提是这些错误不会导致连接中断(通常是严重程度为21以上的错误,例如,表或数据库完整性可疑、硬件错误等等。)。 3、TRY/CATCH 构造 SET XACT_ABORT ON BEGIN TRY <core logic> END TRY BEGIN CATCH TRAN_ABORT <exception handling logic> END TRY @@error may be quired as first statement in CATCH block 4、演示代码 USE demo GO --创建工作表 CREATETABLE student ( stuid INTNOTNULLPRIMARYKEY, stuname VARCHAR(50) ) CREATETABLE score ( stuid INTNOTNULLREFERENCES student(stuid), score INT ) GO INSERTINTO student VALUES (101,'zhangsan') INSERTINTO student VALUES (102,'wangwu') INSERTINTO student VALUES (103,'lishi') INSERTINTO student VALUES (104,'maliu') --调用一个运行时错误 SET XACT_ABORT OFF BEGINTRAN INSERTINTO score VALUES (101,90) INSERTINTO score VALUES (102,78)
createproc[dbo].[Name_Add] @Namevarchar(50) as begin begintran insert Names (Name) select (@Name) wherenotexists (select NameId from Names with(HOLDLOCK) where Name =@Name) committran select NameId,Name from Names with(nolock) where Name =@Name end 要点:检查,加锁,插入值在一句sql中完成.这样再大的并发也不怕了.