事务的作用 以及 为什么只有DML操作才需要提交事务?
为什么,只有DML操作,才需要提交事务?
DML(Data Manipulation Language)操作,包括:INSERT、DELETE、UPDATE、是用来修改数据库中数据的操作,
这些操作的特点是,它们会改变数据库的状态,即:它们会 添加新数据、修改现有数据、删除数据。
由于这些操作,直接涉及数据状态的改变,它们对数据的完整性和一致性有着直接的影响。
事务(Transaction)是一系列数据库操作的逻辑单元,这些操作要么全部成功执行,要么全部不执行。
事务的主要目的,
是确保数据库,从一种一致的状态,转变为,另一种一致的状态, 如果事务中的某个操作失败,那么整个事务都应该回滚(Rollback), 即:撤销已经执行的所有操作,以确保数据库的一致性不被破坏。对于DML操作来说,提交事务(Commit)是非常重要的,原因如下:
一致性保证:通过提交事务,可以确保DML操作所做的更改被永久保存到数据库中。
如果不提交事务,即使DML操作在逻辑上执行了,其更改也不会被保存到数据库中,这会导致数据的不一致状态。
隔离性:事务的隔离性,确保了在事务执行期间,其他并发事务,无法看到该事务未提交的中间状态,
这意味着,在事务完成并提交之前,其他事务不会受到该事务的影响。
回滚恢复:如果DML操作在执行过程中出现错误或违反了一些约束(如唯一性约束),
可以通过回滚事务来撤销这些操作,从而恢复数据库到操作之前的状态。
相比之下,DQL(Data Query Language)操作,如SELECT,只是用于检索数据,不会改变数据库的状态,
因此,它们不需要提交事务,
执行SELECT查询后,你获得的是查询结果的一个副本,对原始数据的任何修改都不会通过这个查询发生,
总之,
DML操作,需要提交事务来确保数据的一致性、隔离性和可恢复性,
而DQL操作则不需要提交事务,因为它们不涉及对数据库状态的修改。