4

テーブルが存在しない場合は作成し、テーブルが既に存在する場合は適切な順序で不足している列を追加する必要があります。

私は多くのクエリや if ステートメントなどでそれを行う方法を知っていますが、ここで私が求めているのは、最善の解決策は何かということです.これを行うための特別なクエリ、またはスマートな方法があるかもしれません.

私はこのようにします:

  • 存在しない場合はテーブルを作成します(すべての列はあるべきです)

  • すべての列を比較します (一部が欠落している場合は追加されますが、そうでない場合は追加されません)

これが最善の方法ですか、それとももっと良い方法がありますか?


追加情報

列を正しい位置に追加する必要があります。すべての列を適切な順序で表す文字列のリストがあります。vb.net を使用して、これらの文字列を繰り返し処理しています。

4

2 に答える 2

4

たとえば、これをチェックしてください。基本的には、データ ディクショナリにクエリを実行し、列が存在しない場合にのみ列を追加します。

IF NOT EXISTS(SELECT NULL
                FROM INFORMATION_SCHEMA.COLUMNS
               WHERE table_name = 'tablename'
                 AND table_schema = 'db_name'
                 AND column_name = 'columnname') THEN

  ALTER TABLE `TableName` ADD `ColumnName` int(1) NOT NULL default '0';

END IF;

プロシージャに入れると、非常に便利になります。

psの位置に関する注意:ドキュメントから

テーブル行内の特定の位置に列を追加するには、FIRST または AFTER col_name を使用します。デフォルトでは、列は最後に追加されます。CHANGE または MODIFY 操作で FIRST および AFTER を使用して、テーブル内の列を並べ替えることもできます。

于 2013-10-31T09:04:17.943 に答える