DDLとは
DDL(Data Definition Language)とは日本語では「データ定義言語」と言い、一言で言えばCREATE
, DROP
, ALTER
文のことです。
暗黙的コミットとは
DDLではトランザクションを張れません。
DDLにはCOMMITを宣言していなくても自動的にCOMMITと同等の処理を発生させてしまう暗黙的COMMITが伴います。
例え、START TRANSACTIONでDDLの前にトランザクションを張っていても暗黙的COMMITのためにROLLBACKで元に戻すことはできません。
DDLの暗黙的コミットの例
START TRANSACTION; DROP TABLE tbl; ROLLBACK;
敢えて書くと下記のようにDDLであるDROP文の上下にCOMMITが走ります。
START TRANSACTION; -- 処理の前に自動的にコミットされる -- COMMIT; DROP TABLE tbl; -- 処理の後に自動的にコミットされる -- COMMIT; ROLLBACK;
DELETE
は暗黙的コミットにはならないためトランザクションを張っておけばROLLBACKが可能です。
一方TRUNCATE
、DROP
は暗黙的COMMITが伴うためROLLBACKが不可能です。