? ? ?前些天在Q群里有为群友问有两个对mysql数据库的操作,一个是对某张表的数据进行删除,另一个是对另一张表的删除,两个操作加入到同一事务中,如果数据删除这步出错,事务是否会回滚?即对于表的删除会不会失效?
? ? ?我当时对这个问题不是很确定,只知道DML会回滚,DDL不确定。自己编写了个小实例验证了下,结果显示:对于表的删除操作(DDL),事务不会回滚。
? ? ?查了下资料,现有如下总结:
? ? ?DDL:数据库定义语言,如DROP、ALTER、CREATE等等。
? ? ?DML:数据库操纵语言,SQL中处理数据等操作统称为数据操纵语言。如SELECT、SAVE、DELETE、 UPDATE等。
? ? ?DCL:数据控制语言,用来授予或回收访问数据库的某种特权,并控制?数据库操纵事务发生的时间及效果,对数据库实行监视等。如GRANT,COMMIT,ROLLBACK等。
? ? ?因为不同的操作隐含着不同的数据提交方式,下面说一下提交数据的方式:
? ? ?①显式提交:用?COMMIT?命令直接完成的提交为显式提交。
? ? ?②隐式提交:??用?SQL?命令间接完成的提交为隐式提交。以下命令都是隐性提交的:?ALTER?,?AUDIT?,?COMMENT?,?CONNECT?,?CREATE?,?DISCONNECT?,?DROP?,?EXIT?,?GRANT?,NOAUDIT?,?QUIT?,?