云数据库 GAUSSDB-事务:嵌套事务

时间:2024-11-12 09:20:37

嵌套事务

嵌套事务指在事务块中开启新事务。

M-Compatibility中,正常事务块中开启新事务会警告存在一个进行中的事务,忽略开启命令;异常事务块中开启新事物将报错,必须在执行ROLLBACK/COMMIT之后才可以执行,执行ROLLBACK/COMMIT会回滚之前语句。

MySQL中,正常事务块中开启新事务会先把之前事务提交,然后开启新事务;异常事务块中开启新事务会忽略错误,提交之前无错误的语句并开启新事务。

-- M-Compatibility正常事务块中,开启新事务会警告并忽略。
m_db=# DROP TABLE IF EXISTS test_t;
m_db=# CREATE TABLE test_t(a int, b int);
m_db=# BEGIN;
m_db=# INSERT INTO test_t values(1, 2);
m_db=# BEGIN;   -- 会警告there is already a transaction in progress。
m_db=# SELECT * FROM test_t ORDER BY 1;
m_db=# COMMIT; 

-- M-Compatibility异常事务块中,开启新事务会报错,必须ROLLBACK/COMMIT之后才可以执行。
m_db=# BEGIN;
m_db=# ERROR sql; -- 错误语句。
m_db=# BEGIN; -- 报错。
m_db=# COMMIT; -- ROLLBACK/COMMIT之后才可以执行。
support.huaweicloud.com/productdesc-gaussdb/gaussdb-83-0056.html