[レシピ270]テーブルを作成したい

追加情報

2013/11/27

「テーブル作成済みの場合に後処理をする方法」についてのご質問がありました。

本書では、レシピの利用例として「インストーラなどでデータベースに新しいテーブルを作成する場合」とあり、それを想定して記述しているので、「既にテーブルがある=SQL文を実行する必要はなく、エラーとみなす必要もない」という前提になっています。 IF NOT EXISTSを付与すると、実際にテーブルを作成したかどうかのチェックはできないので、その制御が必要な場合は、IF NOT EXISTSを使わないCREATE文を使い、実行前にSHOW TABLESなどの結果をチェックして、テーブルの有無をチェックする処理を記述します。

インストーラなどで同時に初期データの挿入処理をしたい場合は、別処理としてデータの有無を別途チェックした後に挿入するか、データが存在してもエラーにならないSQL文を発行する方法が考えられます。