additionalTableMap

additionalTableMapとは?

手動でテーブル定義を設定するためのDBFluteプロパティ。DBFluteクライアントの dfprop 配下の additionalTableMap.dfprop という名前のテキストファイルです。主に JDBCタスク を実行する際に参照され、JDBCタスクが生成する SchemaXML にその内容を追加します。

このプロパティは TwoEdgedSword 扱いです。厳重注意のもと 利用して下さい。

主な利用パターン

テーブルのメタデータが取得できない
JDBCドライバの仕様などでテーブルのメタデータが取得できないようなオブジェクトに対してこのプロパティが有効です。 但し、このような状況はほとんど発生しないことを想定しています。

制限

次のような制限があります。

  • FK制約の設定はできない (additionalForeignKeyで代替すること)
  • Unique制約の設定はできない (additionalUniqueKeyで代替すること)

プロパティ

map型プロパティ で、テーブルとカラムについての情報を定義します。テーブルごとに、テーブル名とその columnMap (カラムについての情報)をmap型のプロパティ、および、テーブルコメント用の comment を定義します。columnMapはカラムごとの情報を map型のプロパティ で定義します。テーブルコメントは必須ではありません。また、テーブル名は、(既に自動生成対象となる)メタデータが取得できるテーブルと同じ名前は指定できません。

additionalTableMapの仕様 @additionalTableMap.dfprop
map:{
    ; [table-name] = map:{
        ; columnMap = map:{
            [column-name] = map:{
                type = [column-JDBC-type] ; required = [true or false]
                ; size = [column-size]
                ; primaryKey = [true or false] ; autoIncrement = [true or false]
            }
            ; [column-name] = map:{
                type = [column-JDBC-type] ; required = [true or false]
                ; size = [column-size]
            }
        }
        ; comment = [table comment]
    }
    ; ...

以下、(*)の付いたプロパティは必須です。

table-name (*)

テーブル名を指定します。mapのキーになっていて、ユニークである必要があります。 実際のデータベース上のテーブルと同じ名前を記述するようにして下さい。

column-name (*)

カラム名を指定します。mapのキーになっていて、(指定されたテーブル内で)ユニークである必要があります。 実際のデータベース上のテーブルと同じ名前を記述するようにして下さい。

type (*)

カラムのデータ型に対応するJDBCタイプを指定します。

値候補
JDBCタイプ
デフォルト
なし

JDBCタイプのマッピング表を参考に適切なタイプを指定します。

required

NotNull制約を指定します。

値候補
true or false (NotNullならtrue)
デフォルト
false

size

カラムの桁数を指定します。

値候補
実際のカラムの桁数
デフォルト
なし

primaryKey

主キーか否かを指定します。

値候補
true or false (PKカラムならtrue)
デフォルト
false

autoIncrement

自動採番されるカラム(Identityカラムなど)か否かを指定します。

値候補
true or false (自動採番されるカラムならtrue)
デフォルト
なし

default

デフォルト制約を指定します。

値候補
デフォルト値
デフォルト
なし

comment

コメント(DBコメント)を指定します。

値候補
コメント内容
デフォルト
なし

Example

e.g. とあるテーブルを定義する例 @additionalTableMap.dfprop
map:{
    ; VENDOR_ADDITIONAL_TABLE = map:{
        ; columnMap = map:{
            ; TEST_ID = map:{
                type = INTEGER ; required = true
                ; primaryKey = true ; autoIncrement = true
            }
            ; TEST_NAME = map:{ type = VARCHAR ; required = true ; size = 123 }
        }
    }
}