常用SQL整理 - TRY CATCH & TRAN


DECLARE @EMP_ID INT ,
    @EMP_NAME VARCHAR(50)

DECLARE @EMP TABLE
    (
      EMP_ID INT ,
      EMP_NAME NVARCHAR(50)
    )
	-- 模拟数据库中存在名为Yanan的数据
INSERT  INTO @EMP
        ( EMP_ID, EMP_NAME )
VALUES  ( 0, -- EMP_ID - int
          N'Yanan'  -- EMP_NAME - nvarchar(50)
          )

SELECT * INTO #tmp FROM @EMP

IF EXISTS ( SELECT  1
            FROM    #tmp
            WHERE   EMP_NAME = 'Yanan' )
    BEGIN
        PRINT 0
        RETURN
    END

--事务要写在RETURN之后
BEGIN TRY
    BEGIN TRANSACTION

    INSERT  INTO #tmp
            ( EMP_ID, EMP_NAME )
    VALUES  ( 1, 'AAA' ) 


    UPDATE  #tmp
    SET     EMP_NAME = 'Yanan'
    WHERE   EMP_ID = 'AA'

END TRY
BEGIN CATCH
    IF XACT_STATE() <> 0
        BEGIN
            PRINT 1
            ROLLBACK
        END

END CATCH

IF XACT_STATE() <> 0
    BEGIN
        PRINT 2
        COMMIT TRAN
    END

SELECT  *
FROM    #tmp

DROP TABLE #tmp

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值