validate_create_sql

  validate_create_sql( string $table_name, string $sql )

テーブル作成SQL(CREATE TABLE)文の検証と最適化を行います。この関数によって最適化されたテーブル作成SQL文を create_table() メソッドに与えることでデータベース上にテーブルを作成することが可能です1。ただし、現在のところ create_table() で作成したテーブルはCDBTプラグインの管理下におかれないため、CDBT管理コンソールからGUIを経由して利用することはできません(※ 将来のバージョンにて対応する予定です)。

パラメータ

$table_name

検証対象となるテーブル名を文字列で指定します。テーブル作成SQL文で作成対象のテーブルとして定義されている必要があります。

$sql

検証したいテーブル作成SQL文を文字列で指定します。この関数におけるテーブル作成SQL文は公式のMySQLにおける完全なSQL文ではなく、CDBTプラグイン専用のSQL文であり、CDBT管理コンソールから入力する形式のSQLと同義です。

返り値

array( bool, string )
このメソッドは検証・最適化処理の結果を含む配列を返します。第1要素に処理結果を示す Boolean 値が入ります。検証結果が正常だった場合は TRUE 、それ以外は FALSE が入ります。第2要素には、正常処理時に最適化されたテーブル作成SQL文が返ります。それ以外の時は NULL が返ります。

変更履歴

バージョン 内容
1.0.0

使用例

<?php
global $cdbt;
$table_name = "customer_master";
if (!$cdbt->check_table_exists($table_name)) {
    $db_engine = "InnoDB";
    $db_charset = $cdbt->options['charset'];
    $table_comment = "Customer Master";
    $create_table_sql = "CREATE TABLE $table_name (
      `customer_name` varchar(255) NOT NULL COMMENT 'Costomer Name',
      `zipcode` mediumint(7) unsigned zerofill DEFAULT NULL COMMENT 'Zipcode',
      `address` text COMMENT 'Address',
      `tel_number` varchar(12) DEFAULT NULL COMMENT 'Telephone Number',
      `url` text COMMENT 'Web site'
    )";
    list($status, $fixed_sql) = $cdbt->validate_create_sql($table_name, $create_table_sql);
    if ($status) {
        $table_data = [ "sql" => sprintf($fixed_sql, $db_engine, $db_charset, $table_comment) ];
        list($result, $message) = $cdbt->create_table($table_data);
        echo $message;
    }
}

  1. 現在のところ、返り値となるSQL文はデータベースオプション部が未完となり、そのままcreate_table()メソッドにSQLを与えてもエラーになります。このメソッドを使ってテーブルを作成する場合は使用例を参照してください。