オートインクリメントって?
簡単に説明するとDBにデータを格納するときに、IDを自動採番してくれる機能です。テーブルに10個の新規データが入っていたら、次にデータを入力する際に自動的に11番を割り振ってくれます。
オートインクリメントの値はセットしなおさなければ、どんどん増えていきます。テーブルに10個のデータしかないからといって、確実に11番を割り振ってくれるわけではないので注意しましょう。
投稿記事の更新などをすると、リビジョンのデータもDBに格納されます。このデータでも自動採番が使われているので注意。
bigint(20) unsigned
※ unsignedは符号なしで使うよという意味。マイナス値が使えない代わりに、倍の範囲を格納できます。
bigint8バイト・・・広範囲整数
※ 符号なしの時の範囲・・・0 ~ 18,446,744,073,709,551,615
phpmyAdminで実際の型を確認してみましたが、同じ種別がセットされていました。
なぜこのような処理が必要になったのか
初稿の投稿記事をExcelにて管理しており、CSVで一括インポートしたかったため、このような処理が必要になりました。。
CSVでの一括記事インポートには、Takuro Hishikawaさんが制作した「Really Simple CSV Importer」を使っております。
SQLでオートインクリメントの値を取得するには?
SQLでオートインクリメントの値を取得するには、下記SQLをなげてAuto_incrementをチェックすればOK。
実際のSQL
※ *****部分には、自分のサーバで設定しているテーブル名を入れてください。
function.phpにDBへの処理を記載する
function.phpの最下部に下記処理を記載しましょう。FTPやツールを使わないなら、「外観>テーマエディタ>function.php」で編集可能。
実際に使用したコードは下記。foreachで回しているが、1行目の値しか使わないためbreak。
他に良い方法があるかもしれない。お作法がよくわかってないので、あくまで参考としてください。
global $wpdb; //データベースを触るためのおまじない
$get_data = $wpdb->get_results(“SHOW TABLE STATUS LIKE ‘*****posts’;”);
$auto_increment = “”;
foreach ( $get_data as $data ) {
$auto_increment = $data->Auto_increment;
break;
}
return $auto_increment;
}
add_shortcode(‘get_auto’, ‘get_auto_increment’);
これで投稿記事などでショートコード[get_auto]と記載すれば、次に使われるオートインクリメントの値を取得することができます。
注意したいのが、「Really Simple CSV Importer」などでCSVインポートする場合、その処理でもカウントを1使用する。
[get_auto]で出た値+1の数値から、CSVのIDとして追加するとベスト。
※ [get_auto]が30なら、CSVのIDは31からスタートさせる。
コメントを残す