Transaction Management

Get started with Transaction Management in LocalStack for Snowflake

Introduction

Transaction Management is a feature that allows you to manage transactions in Snowflake. You can use Transaction Management to create a transaction management system that is specific to your application.

The Snowflake emulator supports Transaction Management, allowing you to emulate realistic database operations that require precise control over when changes are committed or rolled back. The following operations are supported:

Getting started

This guide is designed for users new to Transaction Management and assumes basic knowledge of SQL and Snowflake. Start your Snowflake emulator and connect to it using an SQL client to execute the queries below.

The following sections demonstrate how to start and manage named transactions, check transaction state, control visibility across sessions, and monitor all active transactions using a simple orders table.

Create a table

The following SQL snippet creates a table named orders to store order IDs. We will use this table to test transactional behavior.

CREATE TABLE IF NOT EXISTS orders (
  id INT
);

Begin transaction and insert data

Use the BEGIN or START TRANSACTION statement to begin a transaction and optionally assign it a name. Data inserted during the transaction will not be visible to other sessions until committed.

BEGIN NAME mytxn;

INSERT INTO orders VALUES (1), (2);

Commit transaction

Use the COMMIT statement to save the changes made during the transaction.

COMMIT;

The expected output is:

+------------------------+
| status                 |
|------------------------|
| Transaction committed  |
+------------------------+

View the current transaction

Use the CURRENT_TRANSACTION() function to get the ID of the currently active transaction.

SELECT CURRENT_TRANSACTION() AS txn;

After starting a transaction, this function returns a non-null ID.

START TRANSACTION NAME mytxn2;

SELECT CURRENT_TRANSACTION() AS txn;

The expected output is:

+--------------------------------------+
| TXN                                  |
|--------------------------------------|
| 6f9bfa42-88d7-4c8c-bc7c-3db1d69d1552 |
+--------------------------------------+

Show all active transactions

Use the SHOW TRANSACTIONS statement to view all active transactions.

SHOW TRANSACTIONS;

Rollback transaction

To undo uncommitted changes, use the ROLLBACK statement. Subsequent rollbacks have no effect.

BEGIN;

INSERT INTO orders VALUES (3), (4);

ROLLBACK;