MySQLストアドプロシージャでテーブルを作成する方法
MySQLでは、ストアドプロシージャの中にCREATE TABLE文を組み込むことで、テーブル作成処理を自動化できます。本記事では、Id・UserFirstName・UserLastNameの3つのカラムを持つテーブル「DemoTable」を作成するストアドプロシージャの作成から実行までの手順を解説します。
1. ストアドプロシージャの作成
まずDELIMITERコマンドで区切り文字を「//」に変更します。これは、プロシージャ内のセミコロン(;)が通常のSQL文の終端として誤認識されるのを防ぐためです。続いて、BEGIN〜ENDブロック内にCREATE TABLE文を記述します。
mysql> DELIMITER // mysql> CREATE PROCEDURE Stored_Procedure_CreatingTable() BEGIN create table DemoTable ( Id int NOT NULL AUTO_INCREMENT PRIMARY KEY, UserFirstName varchar(20), UserLastName varchar(20) ); END; // Query OK, 0 rows affected (0.16 sec) mysql> DELIMITER ;
この例では、IdカラムにAUTO_INCREMENTとPRIMARY KEYを設定しているため、レコードを挿入するたびに一意の番号が自動的に採番されます。最後にDELIMITERを元の「;」に戻すことを忘れないようにしましょう。
2. ストアドプロシージャの実行
作成したストアドプロシージャは、CALLコマンドを使って呼び出します。これにより、プロシージャ内のCREATE TABLE文が実行され、テーブルが生成されます。
mysql> call Stored_Procedure_CreatingTable(); Query OK, 0 rows affected (0.18 sec)
3. テーブル構造の確認
DESCコマンドを実行して、テーブルが正しく作成されているか確認します。
mysql> desc DemoTable;
実行すると、以下のような出力が得られます。
+---------------+-------------+------+-----+---------+----------------+ | Field | Type | Null | Key | Default | Extra | +---------------+-------------+------+-----+---------+----------------+ | Id | int(11) | NO | PRI | NULL | auto_increment | | UserFirstName | varchar(20) | YES | | NULL | | | UserLastName | varchar(20) | YES | | NULL | | +---------------+-------------+------+-----+---------+----------------+ 3 rows in set (0.04 sec)
出力結果を見ると、IdカラムにはPRI(主キー)とauto_incrementが設定されており、テーブルが意図どおりに作成されたことがわかります。このようにストアドプロシージャを活用すれば、複数の環境へのテーブル展開や初期化処理を効率化できます。
-
MySQL Workbenchでストアドプロシージャを作成・実行する方法
MySQL Workbenchでストアドプロシージャを作成する手順 まずは、ストアドプロシージャを作成してみましょう。以下は、MySQL Workbenchを使用してストアドプロシージャを作成するためのクエリ例です。 use business; DELIMITER // DROP PROCEDURE IF EXISTS SP_GETMESSAGE; CREATE PROCEDURE SP_GETMESSAGE() BEGIN DECLARE MESSAGE VARCHAR(100); SET MESSAGE="HELLO"; SELECT CONCAT(MESSAGE, ,
-
MySQLストアドプロシージャでSHOW CREATE TABLEを実行する方法
MySQLストアドプロシージャでSHOW CREATE TABLEを実行する方法 ストアドプロシージャの中でSHOW CREATE TABLEを実行したい場合は、動的SQL(プリペアドステートメント)を利用します。SHOW系のコマンドはプロシージャ内に直接記述できないため、SQL文を文字列として組み立てて実行するのがポイントです。 まずはサンプル用のテーブルを作成しましょう。 mysql> create table DemoTable2011 -> ( -> StudentId int NOT NULL AUTO_INCREMENT, -> St