-1

mysql でテーブルを変更して新しい列を追加しているときに、致命的なエラーが発生しました..この質問に関連する回答を見たことがあります。

Make a new table with the same structure.
Add the column to the new table.
Insert the data from the old table into the new table.
Rename the old table to old.bak
Rename the new table to the old table.
If all went well, delete the old.bak.

しかし、元のテーブルにはいくつかのトリガー、インデックスなどが含まれています。

私の質問は

「この致命的なエラーを克服するために、Alter Script を任意の差分方法で記述できますか?」

私の懸念はMYSQLに関連していますが、他のRDBMS関連の回答も問題ありません...

4

1 に答える 1

0

これは MySQL 固有です。 と の組み合わせを使用して、テーブルとトリガーを再生成でき[SHOW CREATE TABLE tabname][1]ます[SHOW TRIGGERS WHERE Table = 'tabname'][2]。行をコピーしているときにトリガーを起動させたくない場合があります。また、テーブルのサイズが大きい場合、または変更率が十分に高い場合は、コピー中のテーブルへの書き込みを防止することをお勧めします。

一連の手順:

  1. テーブルへの書き込みを防止する (オプション)
  2. 出力を含む新しいテーブルを作成しSHOW CREATE TABLEます。
  3. スキーマの変更を適用します。
  4. 古いテーブルから新しいテーブルにデータをコピーします。
  5. 出力からトリガーを適用しSHOW TRIGGERSます。
  6. 古いテーブルと新しいテーブルを交換します。

お役に立てれば。

于 2013-01-03T07:37:27.907 に答える