在SQL Sever中数据的安全是十分重要的,由于我们在操作数据时,难免会遇到一些突发状况,这些突发状况给我们的数据带来了很多麻烦,比如我们在更新数据时,更新了一部分,突然停电电脑关机,更新操作执行了一半,数据没有全部更新,造成数据的不一致,为了避免这种情况的发生,SQL Sever提供了“事务”来解决这种问题。
事务是指作为单个逻辑工作单元执行的一系列操作,而这些逻辑工作单元需要具有原子性,一致性,隔离性和持久性四个属性,统称ACID特性。具体的特性如下图所示:
事务分为两种,即为隐式事务和显式事务。每次执行SQL Server的任何数据修改语句时,它都是一个隐式事务。显式事务通常在程序中用BEGIN TRANSACTION 命令来标识一个事务的开始,用COMMIT TRANSACTION命令标识事务结束;这两个命令之间的所有语句被视为一体。只有执行到COMMIT TRANSACTION命令时,事务中对数据库的更新操作才算确认 。 事务也可以像其他语句一样,进行嵌套。
即使有了事务,事务中的语句也难免会执行失败,这时候我们还可以使用事务回滚,将我们对数据库的操作恢复到事务执行前或者我们指定的位置,事务回滚使用ROLLBACK TRANSACTION命令,通过在事务中设定保存点Save Point,当事务中语句失败时,回到指定的位置。