前回CREATE文でテーブルを作成しました。
「CREATE TABLE 〜」のクエリでは反復して実行するワークフローには不向きです。
今回はCREATE文で定期実行してもエラーにならない方法をご紹介します。
IF NOT EXISTS
「CREATE TABLE」の後に「IF NOT EXISTS」を付けることで、たとえすでにテーブルが作成されていてもエラーになることはありません。
CREATE TABLE IF NOT EXISTS `sql-book-384011.sample.20230730_training_menu_arm`
(
menu STRING OPTIONS(description = 'トレーニングメニュー'),
use STRING OPTIONS(description = '使う器具'),
repetition_maximum INTEGER OPTIONS(description = '最大反復回数'),
set_count INTEGER OPTIONS(description = 'セット数'),
rest INTEGER OPTIONS(description = '休憩時間(分)')
)
OPTIONS (description = '腕の日のトレーニングメニュー')
結果が変わりました。
「IF NOT EXISTS」があるとテーブルがないときだけクエリを実行してくれます。
テーブルがすでにあるときは図のような「テーブル 20230730_training_menu_arm はすでに存在します。」とメッセージを出してくれるので親切ですね!
実行履歴を確認する
実行履歴も見ておきましょう。
上が「IF NOT EXISTS」があるクエリ、下がないクエリです。
上はクエリが成功していますが、下はクエリが失敗していますね。
もし「IF NOT EXISTS」がない状態で定期実行をしているとクエリを実行するたびにエラーが発生し、定期実行の意味がありません。
「IF NOT EXISTS」を付けることですでにテーブルが作られていたとしても処理が止まることはありません。これだと定期実行でも使えそうですね!
まとめ
将来的に自動や定期実行するのであればCREATE文のあとに「IF NOT EXISTS」を付けておきましょう。
実行のたびにエラーが発生しないので便利です!