タイプcontent
の列_page_type
_を持つMySQLテーブル "ENUM
"があります。 ENUM
値はNEWS
&_PRESS_RELEASE
_です。 NEWS
を_FEATURED_COVERAGE
_に置き換える必要があります。
_ALTER TABLE `content` CHANGE `pagetype` `pagetype` ENUM('FEATURED_COVERAGE','PRESS_RELEASE') CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL;
_
しかし、今では以前page_type NEWS
を持っていたテーブル内のレコードは空になり、どのレコードがNEWS
であるかを特定する方法がないため、それらを_FEATURED_COVERAGE
_。
そのような問題を解決する方法は?
あなたの質問を理解したら、既存の列挙値NEWS
の名前をFEATURED_COVERAGE
。その場合、以下の手順に従う必要があります。
テーブルを変更し、新しい列挙値を列に追加して、3つの列挙を作成します。
ALTER TABLE `content` CHANGE `pagetype` `pagetype`
ENUM('FEATURED_COVERAGE','PRESS_RELEASE', 'NEWS') CHARACTER SET utf8
COLLATE utf8_general_ci NOT NULL;
すべてのレコードの古い列挙値を新しい値に設定します。
UPDATE `content` set `pagetype` = 'FEATURED_COVERAGE' where
`pagetype` = 'NEWS';
テーブルを変更し、古い列挙値を削除します。
ALTER TABLE `content` CHANGE `pagetype` `pagetype`
ENUM('FEATURED_COVERAGE','PRESS_RELEASE') CHARACTER SET utf8 COLLATE
utf8_general_ci NOT NULL;
MySQLの列挙型には常に、整数として0、文字列として ''の隠しオプションがあります。無効な値を割り当てようとすると、非表示の値が使用されます。
更新前のすべての空の値が「NEWS」であったと仮定すると、それらを変更できます
UPDATE content SET pagetype = 'FEATURED_COVERAGE' WHERE pagetype = 0
デフォルトが助けになったと思う。
ALTER TABLE `content`
CHANGE `pagetype` `pagetype` ENUM('FEATURED_COVERAGE','PRESS_RELEASE')
CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL DEFAULt 'FEATURED_COVERAGE';
今、あなたは盲目的にアップデートする必要があります
値セットが変更されている場合は、列挙列を使用しないでください。
列挙型を1つだけ変更したので、難しくありません。
これを使ってみてください
UPDATE content SET pagetype = 'FEATURED_COVERAGE' WHERE pagetype = 0