事务的本质特征:
所有的事务都有开始和结束事务可以被保存和撤销如果事务在中途失败,事务中的任何部分都不会被记录到数据库
2.当一个事务被执行并成功完成时,虽然从输出结果来看目标表已经被修改了,但实际上目标表并不是立即被修改。当事务成功完成时,利用事务控制命令最终认可这个事务,可以把事务所做的修改保存到数据库,也可以撤销事务所做的修改。
3.控制事务的命令有3个:
COMMIT ROLLBACK SAVEPOINT
事务控制命令只与DML(数据操作语言)命令INSERT,UPDATE, DELETE配合使用,比如我们不会再创建表之后使用COMMIT命令,因为当表被创建之后,它会自动被提交给数据库。当然也不能使用ROLLBACK来恢复被撤销的表。此外,还有其他类似的语句,也是不能被撤销的。
COMMIT命令
COMMIT命令用于把事务所做的修改保存到数据库,它把上一个COMMIT或ROLLBACK(不包含rollback to savepoint)命令之后的全部事务都保存到数据库。这个命令的语法是:
commit [work];
关键字COMMIT是语法中惟一不可缺少的部分,其后是用于终止语句的字符或命令,具体内容取决于不同的实现。关键字WORK是个选项,其惟一作用是让命令对用户更加友好。
ROLLBACK命令
rollback命令用于撤销还没有保存到数据库的命令,它只能用于撤销上一个commit或rollback命令之后的事务
SAVEPOINT命令
保存点是事务过程中的一个逻辑点,我们可以把事务回退到这个点,而不必回退整个事务。
语法:savepoint savepoint_name
这个命令就是事务语句之间创建一个保存点。rollback命令可以撤销一组事务操作,而保存点可以将大量事务操作
划分为较小的、更易于管理的组。
ROLLBACK TO SAVEPOINT命令
RELEASE SAVEPOINT命令(SQLserver中不支持)
用于删除创建的保存点
RELEASE SAVEPOINT savepoint_name
SET TRANSACTION命令
这个命令用于初始化数据库事务,可以指定事务的特性。列,可以指定事务是只读或者是可读写的
SET TRANSACTION READ WRITE;SET TRANSACTION READ ONLY;
事务控制与数据库性能(待补充)