Istruzioni SQL che causano un commit implicito

Alcune istruzioni SQL provocano un commit implicito. Come regola generale, si tratta dei comandi DDL. Ecco l'elenco:

ALTER DATABASE ... UPGRADE DATA DIRECTORY NAME
ALTER EVENT
ALTER FUNCTION
ALTER PROCEDURE
ALTER SERVER
ALTER TABLE
ALTER VIEW
ANALYZE TABLE
BEGIN
CACHE INDEX
CHANGE MASTER TO
CHECK TABLE
CREATE DATABASE
CREATE EVENT
CREATE FUNCTION
CREATE INDEX
CREATE PROCEDURE
CREATE SERVER
CREATE TABLE
CREATE TRIGGER
CREATE USER
CREATE VIEW
DROP DATABASE
DROP EVENT
DROP FUNCTION
DROP INDEX
DROP PROCEDURE
DROP SERVER
DROP TABLE
DROP TRIGGER
DROP USER
DROP VIEW
FLUSH
GRANT
LOAD INDEX INTO CACHE
LOCK TABLES
OPTIMIZE TABLE
RENAME TABLE
RENAME USER
REPAIR TABLE
RESET
REVOKE
SET PASSWORD
SHUTDOWN
START SLAVE
START TRANSACTION
STOP SLAVE
TRUNCATE TABLE
UNLOCK TABLES

SET autocommit = 1 causa un commit implicito se il valore era 0.

Tutte queste istruzioni causano un commit implicito prima dell'esecuzione. Alcune di esse, come CREATE TABLE ... SELECT, ne causa un altro dopo l'esecuzione. Tali istruzioni non potrebbero comunque essere annullate.

Eccezioni

Queste istruzioni non causano un commit implicito nei casi seguenti:

  • CREATE TABLE, ALTER TABLE e DROP TABLE, quando viene utilizzata la parola chiave TEMPORARY.
  • CREATE FUNCTION e DROP FUNCTION, quando creano una UDF (invece di una Stored Function). Tuttavia, CREATE INDEX e DROP INDEX causano i commit anche quando usati sulle tabelle temporanee.
  • UNLOCK TABLES causa un commit solo se prima è stato usato un LOCK TABLES su tabelle non transazionali.
  • START SLAVE, STOP SLAVE, RESET SLAVE e CHANGE MASTER TO causano un commit implicito solo da MariaDB 10.0.

Commenti

Sto caricando i commenti......
Content reproduced on this site is the property of its respective owners, and this content is not reviewed in advance by MariaDB. The views, information and opinions expressed by this content do not necessarily represent those of MariaDB or any other party.