SnowPro Advanced: Data Engineer 問題集

SnowPro Advanced: Data Engineer (DEA-C02) 試験対策公式 Study Guide DEA-C02(2026年3月更新)準拠

SnowPro Advanced: Data Engineerの日本語問題集。全180問に解説つき。

SnowPro Advanced: Data Engineer 無料問題 8 / 10 ・ 分野5: Data Transformation

手続きの中で BEGIN TRANSACTION のあと、表 A へ INSERT し、作業用の表を CREATE TABLE で作り、表 B へ INSERT した。表 B への INSERT が失敗したので ROLLBACK した。表 A に入れた行はどうなるか。

  1. 取り消される。ROLLBACK は CREATE TABLE も含め、BEGIN TRANSACTION 以降の文を取り消すため
  2. 取り消される。表 B への INSERT が失敗すると、トランザクション全体が取り消されるため
  3. 残る。AUTOCOMMIT が既定で TRUE なので、明示的なトランザクションの中の各文も確定するため
  4. 残る。CREATE TABLE が実行前に暗に COMMIT し、A の INSERT が確定したため
正解と解説を見る

正解: D

正解の理由
DDL 文はそれぞれ別のトランザクションとして実行される。トランザクションが有効な間に DDL を実行すると、DDL は (1) 有効なトランザクションを暗に COMMIT し、(2) 自分を別のトランザクションとして実行する。そのため BEGIN TRANSACTION のあとに CREATE TABLE を置くと、それまでの表 A への INSERT はその時点で確定し、あとの ROLLBACK では取り消されない。DDL のすぐ後の DML は、新しいトランザクションを暗に始める。公式が、明示的なトランザクションには DML と問い合わせだけを入れるよう勧めているのはこのためである。

違う選択肢
「取り消される。ROLLBACK は CREATE TABLE も含め、BEGIN TRANSACTION 以降の文を取り消すため」… ROLLBACK が取り消すのは、まだ確定していないトランザクションの文である。表 A への INSERT は CREATE TABLE の前の暗の COMMIT で確定済みなので、取り消されない。DDL は自分がトランザクションなので、CREATE TABLE も ROLLBACK では取り消せない。
「取り消される。表 B への INSERT が失敗すると、トランザクション全体が取り消されるため」… トランザクションの中で文が失敗しても、トランザクション全体が自動で取り消されるわけではなく、残りを確定することもできる。しかも表 A の INSERT は CREATE TABLE の時点で確定している。
「残る。AUTOCOMMIT が既定で TRUE なので、明示的なトランザクションの中の各文も確定するため」… 明示的なトランザクションの中の文は AUTOCOMMIT の影響を受けない。表 A の行が残るのは AUTOCOMMIT のためではなく、DDL の前の暗の COMMIT のためである。

手続きでの注意
AUTOCOMMIT の設定は手続きの中で変えない。AUTOCOMMIT を無効にしているとき、手続きの終わりで有効なままのトランザクションは暗に ROLLBACK される。DDL は自分がトランザクションなので、DDL 自体を ROLLBACK で取り消すことはできない。

SnowPro Advanced: Data Engineerの演習アプリ(無料10問・全問は解錠で)へ

問題集(note)を見る