CREATE INDEX IF NOT EXIST


CREATE INDEX IF NOT EXISTというインデックス作成方式はMySQLではサポートされておらず、CREATE INDEXのみサポートされており、2回連続でCREATE INDEXを実行しており、2回目はエラーが発生します.
では、アップグレードスクリプトでテーブルにインデックスを作成したいという問題に直面しました.このスクリプトは繰り返し実行される可能性があります.次の方法は安全です.
if(!pdo_fieldexists('goods', 'cover_content')) {
  pdo_query("ALTER TABLE goods ADD `cover_content` text");
}


CREATE TABLE if not exists  `express` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
);

しかし、インデックスは、このような先判断後に作成されるパターン、すなわちCREATE INDEX IF NOT EXISTはサポートされず、明確なインタフェースを与えてインデックスが存在するか否かを判断するものではない.MySQLドキュメントのソリューションは複雑すぎます.http://dev.mysql.com/doc/refman/5.0/en/create-index.html
私は土鳖の方法を思いついた.
if(!pdo_fieldexists('dummy_table', 'new_column')) {
  pdo_query("ALTER TABLE dummy_table ADD `new_column` int");
  create index my_index_on_goods xxxxx;
}

完璧にやる!対価は不要な列を作ったので、一応Guard Columnと呼ぶことにしましょう.このような需要が頻繁であれば、無駄な時計を作ってこのことをすることができます.
なぜMySQLはCREATE INDEX IF NOT EXISTをサポートしないのですか?月曜日にOceanBaseがこれを支持しているかどうかを聞いてみましょう.ちょっとおかしいです.