개발을 하다가, 특정 컬럼을 Auto Increment로 변경해야 할 일이 생겼다.
그래서 아무생각없이, 아래와 같이 쿼리를 날렸다.
ALTER TABLE $내테이블명
MODIFY COLUMN
$바꾸고자하는컬럼명
bigint auto_increment NOT NULL;
이러니까.. auto_increment로 쓰려면 PK가 되어야한다고 한다.
음? 근데 이 컬럼명은 키로 사용중인데?
다만, 해당 테이블의 키로 쓰는 컬럼이 두개가 있긴했다. 하나는 non-auto-increment이고, 그녀석이 우선순위가 높을 뿐..
auto_increment가 적용된 컬럼만 key로 사용 | 가능 |
auto_increment가 적용된 컬럼을 제외한 다른 컬럼만 key로 사용 | 불가 |
key( auto_increment, other )로 key가 정해진 경우 | 가능 |
key( other, auto_increment)로 key가 정해진 경우 | 불가 |
오호... 이런 제약도 있었구나.
그러면 기존의 key를 변경해야 할듯 하다.
ALTER TABLE
$내테이블명
DROP KEY
$기존Key이름,
ADD UNIQUE KEY
$새로운Key이름 ($auto_increment컬럼명, $다른컬럼명) ;
위와 같이 쿼리를 실행하면 키를 변경할 수 있다.
그리고 아까 auto_increment 설정 쿼리를 날려주면 됨.
반응형
댓글