Anonymous Block Supporting Autonomous Transaction
An autonomous transaction can be defined in an anonymous block. The identifier of an autonomous transaction is PRAGMA AUTONOMOUS_TRANSACTION. The syntax of an autonomous transaction is the same as that of creating an anonymous block. For details, see Anonymous Blocks. The following is an example:
gaussdb=# CREATE TABLE t1(a INT ,B TEXT); NOTICE: The 'DISTRIBUTE BY' clause is not specified. Using 'a' as the distribution column by default. HINT: Please use 'DISTRIBUTE BY' clause to specify suitable data distribution column. CREATE TABLE gaussdb=# START TRANSACTION; START TRANSACTION gaussdb=# DECLARE PRAGMA AUTONOMOUS_TRANSACTION; BEGIN DBE_OUTPUT.PRINT_LINE('JUST USE CALL.'); INSERT INTO t1 VALUES(1,'YOU ARE SO CUTE,WILL COMMIT!'); END; / JUST USE CALL. ANONYMOUS BLOCK EXECUTE gaussdb=# INSERT INTO t1 VALUES(1,'YOU WILL ROLLBACK!'); INSERT 0 1 gaussdb=# ROLLBACK; ROLLBACK gaussdb=# SELECT * FROM t1; a | b ---+------------------------------ 1 | YOU ARE SO CUTE,WILL COMMIT! (1 row) gaussdb=# DROP TABLE t1; DROP TABLE
In the preceding example, an anonymous block containing an autonomous transaction is finally executed before a transaction block to be rolled back, which directly illustrates a characteristic of the autonomous transaction, that is, rollback of the primary transaction does not affect content that has been committed by the autonomous transaction.
Feedback
Was this page helpful?
Provide feedbackThank you very much for your feedback. We will continue working to improve the documentation.See the reply and handling status in My Cloud VOC.
For any further questions, feel free to contact us through the chatbot.
Chatbot