1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Snowflakeのトランザクション操作

Posted at

Snowflakeでトランザクション管理ってできるんだっけ?という疑問から調査しました。

トランザクションの開始

BEGIN;
BEGIN TRANSACTION;
BEGIN WORK;
START TRANSACTION;

この4つはすべて同じ意味。

トランザクションの終了

コミット

COMMIT;
COMMIT WORK;

この2つは同じ意味。

ロールバック

ROLLBACK;
ROLLBACK WORK;

この2つは同じ意味。

実験

実験してみます。

BEGIN;
SHOW TRANSACTIONS;
SELECT CURRENT_TRANSACTION();
COMMIT WORK;
SHOW TRANSACTIONS;
SELECT CURRENT_TRANSACTION();
SELECT LAST_TRANSACTION();

上記を実行してみます。

  • BEGIN;
    スクリーンショット 2025-02-24 102409.png
    トランザクションを開始しました。

  • SHOW TRANSACTIONS;
    スクリーンショット 2025-02-24 102426.png
    トランザクションの情報を見てみます。

  • SELECT CURRENT_TRANSACTION();
    スクリーンショット 2025-02-24 102440.png
    今のトランザクションIDだけを取得してみます。

  • COMMIT WORK;
    スクリーンショット 2025-02-24 102453.png
    COMMITします。(何もしてないのでROLLBACKでもいいのですがCOMMITを採用。一応オプションのWORKもつけてみた。)

  • SHOW TRANSACTIONS;
    スクリーンショット 2025-02-24 102508.png
    トランザクションを終了しているのでトランザクションの情報はありませんでした。

  • SELECT CURRENT_TRANSACTION();
    スクリーンショット 2025-02-24 102520.png
    同様にCURRENT_TRANSACTION()の値は取れずnullでした。

  • SELECT LAST_TRANSACTION();
    スクリーンショット 2025-02-24 102532.png

直近のトランザクションIDは取得できました。

追加

DESC TRANSACTION 1740360208952000000;

スクリーンショット 2025-02-24 102747.png

LAST_TRANSACTION()で取得したトランザクションIDを使ってDESCコマンドも追加実行しました。
BEGIN直後のSHOW TRANSACTIONS;と同じ結果が取得できました。

まとめ

Snowflakeでトランザクションって意識してなかったけどあるんですね。
ストアドなどで順次処理を組んでる場合には使えることがわかりました。

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?