日期:2014-05-20  浏览次数:20702 次

SQL2008数据库 事务
数据库的事务怎么写啊!老师只是讲了下概念性的东西,具体怎么写根本都不会啊!!求高手
------解决方案--------------------
假设数据库中有表一张ID为主键的表
如果直接用两条insert语句

INSERT INTO [表]([ID]) VALUES (1);
INSERT INTO [表]([ID]) VALUES (1); 

则第一条执行成功,第二条不成功,因为违反主键约束。此时数据库有有一条记录。
如果用事务

BEGIN TRANSACTION
    INSERT INTO [表]([ID]) VALUES (1);
    INSERT INTO [表]([ID]) VALUES (1); 
    IF @@ERROR > 0
        BEGIN
            ROLLBACK TRANSACTION
        END
    ELSE
        BEGIN
            COMMIT TRANSACTION
        END

则由于第二条执行失败,会回滚第一条。此时数据库中没有记录。