validate_alter_sql

  validate_alter_sql( string $table_name, string $sql )

テーブル構造変更SQL(ALTER TABLE)文の検証と最適化を行います。この関数によって最適化されたテーブル構造変更SQL文を実行するには、WordPressコアクラスのメソッド$wpdb->query()を使います。

パラメータ

$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)) {
    $alter_table_sql = "ALTER TABLE $table_name 
      ADD `description` text DEFAULT NULL COMMENT 'Description' AFTER `url`, 
    ";
    list($status, $fixed_sql) = $cdbt->validate_alter_sql($table_name, $alter_table_sql);
    if ($status) {
        $wpdb->query($fixed_sql);
    }
}

データベースエンジンを変更する

<?php
global $cdbt;
$table_name = "customer_master";
if ($cdbt->check_table_exists($table_name)) {
    $alter_table_sql = "ALTER TABLE $table_name 
      ENGINE = MyISAM
    ";
    list($status, $fixed_sql) = $cdbt->validate_alter_sql($table_name, $alter_table_sql);
    if ($status) {
        $wpdb->query($fixed_sql);
    }
}

特定のカラムにインデックスを貼る

<?php
global $cdbt;
$table_name = "customer_master";
if ($cdbt->check_table_exists($table_name)) {
    $alter_table_sql = "ALTER TABLE $table_name 
      ADD FULLTEXT `fulltext_index` (`address`)
    ";
    list($status, $fixed_sql) = $cdbt->validate_alter_sql($table_name, $alter_table_sql);
    if ($status) {
        $wpdb->query($fixed_sql);
    }
}