以下这些SQL语句会产生一个隐式的提交操作,即执行完这些语句后,会有一个隐式的 COMMIT操作
- DDL语句: ALTER DATABASE UPGRADE DATA DIRECTORY NAME,ALTER EVENT, ALTER PROCEDURE, ALTER TABLE, ALTER VIEW,CREATE DATABASE, CREATE EVENT, CREATE INDEX, CREATE PROCEDURE, CREATE TABLE, CREATE TRIGGER, CREATE VIEW,DROP DATABASE, DROP EVENT, DROP INDEX, DROP PROCEDURE,DROP TABLE, DROP TRIGGER, DROP VIEW, RENAME TABLE,TRUNCATE TABLE。
- 用来隐式地修改 MySQL架构的操作: CREATE USER、DROP USER、GRANT、RENAME USER、REVOKE、SET PASSWORD。
- 管理语句: ANALYZE TABLE、CACHE INDEX、CHECK TABLE、LOAD INDEX INTO CACHE、OPTIMIZE TABLE、REPAIR TABLE。
Microsoft SQL Server的数据库管理员或开发人员往往忽视对于DDL语句的隐式提交操作,因为在 Microsoft SQL Server数据库中,即使是DDL也是可以回滚的。这和 InnoDB存储引擎、 Oracle这些数据库完全不同。
另外需要注意的是, TRUNCATE TABLE语句是DDL,因此虽然和对整张表执行DELETE的结果是一样的,但它是不能被回滚的(这又是和 Microsoft SQL Server数据不同的地方)。