sqlserver 事务try-catch

来源:互联网 发布:js array splice 添加 编辑:程序博客网 时间:2024/06/05 16:03

通过事务对两个表中的时间进行修改。
结合事务的优点:原子性,一致性,隔离性,持久性;在同时对多个表进行修改的情况使用事务
性能更高;一般事务都是结合存储过程进行处理

create procedure trans(@Dt datetime,@Dtu datetime)asbegin try begin transaction update LogUser SET logTime=@Dt WHERE logId ='42f72e53-0f0d-4158-a573-fdf2a0b26f59' UPDATE [User] SET Logtime=@Dtu WHERE Uid = '17266501-CB5C-4377-BD51-74F51D0F6553' COMMITend tryBEGIN CATCH    IF(@@trancount>0)    ROLLBACK    DECLARE @ErrMsg NVARCHAR(4000),@ErrSeverity INT    SELECT @ErrMsg=ERROR_MESSAGE(),@ErrSeverity=ERROR_SEVERITY()    RAISERROR(@ErrMsg,@ErrSeverity,1)END CATCH

执行方式:可以在代码中传递参数进行调用、也可以在sql中进行直接调用;
这里简单在sql中处理了一下

DECLARE @tt varchar(50)='2014'DECLARE @ttu varchar(50)='2015'exec trans @tt,@ttu

可以根据修改参数测试不同的结果,错误时的显示和正确时的显示

0 0
原创粉丝点击