標準SQLでは、あらかじめ一時テーブルを定義しておくことで、アプリケーションがデータベースに接続した際に、自動的に空の一時テーブルを作成します。しかし、Symfoware Serverでは、アプリケーションがデータベースに接続した際に、明示的にCREATE TABLE文を使用して一時テーブルを作成する必要があります。
同一セッションで同じ一時テーブルの作成と削除を繰り返すと、システムテーブルの膨張や使用メモリ量の増加につながることがあります。これを防ぐために、一度作成した一時テーブルを再利用するようにCREATE TABLE文を記述します。
たとえば、繰り返し実行する各トランザクションで、一時テーブルを作成・削除するような場合には、次のようにCREATE TABLE文を記述します。
トランザクション開始時に一時テーブルが存在しないときだけ作成するように“IF NOT EXISTS”を指定します。
トランザクション終了時にすべての行を削除するように“ON COMMIT DELETE ROWS”を指定します。
参照
CREATE TABLE文の詳細は、“PostgreSQL文書”の“リファレンス”の“SQLコマンド”を参照してください。
一時テーブルを使用したSQLの例を以下に示します。
BEGIN; CREATE TEMPORARY TABLE mytable(col1 CHAR(4), col2 INTEGER) ON COMMIT DROP; ・・・ mytableに対する処理 COMMIT;
BEGIN; CREATE TEMPORARY TABLE IF NOT EXISTS mytable(col1 CHAR(4), col2 INTEGER) ON COMMIT DELETE ROWS; ・・・ mytableに対する処理 COMMIT;