programing

MySQL 열 ENUM 값 변경

copysource 2022. 10. 21. 22:31
반응형

MySQL 열 ENUM 값 변경

테이블 MySQL"이.content에는 '이렇게 하다'라는 글자가 있어요page_type입입 of ENUM . 。ENUM값은 다음과 같습니다.NEWS&PRESS_RELEASENEWSFEATURED_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 합니다.

  1. 테이블을 변경하고 컬럼에 새 열거값을 추가하여 3개의 enum을 만듭니다.

    ALTER TABLE `content` CHANGE `pagetype` `pagetype`
    ENUM('FEATURED_COVERAGE','PRESS_RELEASE', 'NEWS') CHARACTER SET utf8
    COLLATE utf8_general_ci NOT NULL;
    
  2. 모든 레코드에 대해 이전 열거 값을 새 값으로 설정합니다.

    UPDATE `content` set `pagetype` = 'FEATURED_COVERAGE' where
    `pagetype` = 'NEWS';
    
  3. 테이블을 변경하고 이전 열거 값을 삭제합니다.

    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

언급URL : https://stackoverflow.com/questions/15642695/mysql-change-a-column-enum-value

반응형