상품코드 길이 줄이기와 순차적으로 ....

상품코드 길이 줄이기와 순차적으로 ....

QA

상품코드 길이 줄이기와 순차적으로 ....

답변 10

본문

상품코드 관련 질문을 찾아보니 생각외로 적으네요. 

 

기본 10자리 이고 ....

랜덤 생성 되는데 ....

 

이걸 한자리 숫자로 시작

게시판 처럼 1 부터 카운팅 되게 하려고 합니다.

 

첫번째 상품등록 상품코드는 1

두번째 상품등록 상품코드는 2 

.

.

.

식으로요. 

 

조언 좀 부탁 드립니다. 고맙습니다.

 

 

이 질문에 댓글 쓰기 :

답변 10

참고하세요

ALTER TABLE `g5_shop_item` CHANGE `it_id` `it_id` INT NOT NULL AUTO_INCREMENT;

SQL 질의:

ALTER TABLE `g5_shop_cart` CHANGE `it_id` `it_id` INT NOT NULL AUTO_INCREMENT

MySQL 메시지: 도움말

#1075 - Incorrect table definition; there can be only one auto column and it must be defined as a key

식으로 에러가 보여지네요. 조언 좀 부탁 드립니다.

phpmyadmin 버전이 다른것으로 수동으로 편집 > 수정에 들어가서 추가 항목에
종류 INT Null not null 추가 auto_increment 를 선택해도 같은 에러 메세지가 보여진답니다.

it_id의 타입을 varchar에서 int로 바꾸고
컬럼의 속성을  auto_increment 로 변경해보세요

자동증가 됩니다.

it_id 실행(변경)



후 ....



이름 종류 길이/값 기본값 데이터정렬방식 보기 Null A I 설명 컬럼이동



순으로 보여집니다. 플래토님 말씀처럼 타입은 종류 에서 쉽게 변경이 가능 하구요.

컬럼의 속성을 auto_increment 로 변경해 보려고 하는데요 .... 

어느 항목에서 해 주어야 하는지요? 조언 좀 부탁 드립니다.



종류의 INT 값만 변경 시도를 하면 질의오류 #1067 - Invalid default value for 'it_id' 라고

에러 팝업을 보여 주네요.


it_id 는 g5_shop_item 테이블의 컬럼에만 auto_increment를 해야하는것이구요

it_id 가 참조로 되는 영역들에서는 varchar를 int로 변경하는 작업들을 다 하셔야 합니다.

​​​​​​​이런것을 진행할때 데이타가 이미 들어가 있으면 오류가 발생할수있으니 참고하세요

ALTER TABLE `g5_shop_cart` CHANGE `it_id` `it_id` INT NOT NULL AUTO_INCREMENT -> 카트 테이블에서 변경 하시는 건가요

thumb-3543907947_1591754149.5958_730x126.png

3543907947_1591754310.5494.png

 

ct_id 에서 키하고 auto 선점 했네요....

제가 보기에는카트 테이블에서  ct_id는 인덱스를 잡아 주는 것이고

od_id 가 직접적인 주문 번호 인것 같습니다.

질문에 상품코드을 물어보셨고 수정된 코드는 카트테이블 it_id에 잘 들어 갑니다.

궁금한 것은 왜 카트 테이블에서 상품코드를 변형 하실려고 하는지 궁금합니다.

 

그냥 사용해도 무방 한데요 .....

카테고리 id (ca_id) 를
분류명 아무개(ca_id 는 nt)

nt상품코드 > nt123456 식으로 보여지게 하려고 합니다.
(순차적 으로 한다면 nt1 식이 되겠지요?) ca_id + it_id 식이
되겠네요. it_id 앞에 ca_id를 붙이려고 하는데 생각보다 쉽지가
않더라구요.

부품을 진열해 놓고 주문이 오면 nt5 일 경우 nt 라는 칸에 5번 물건을
내어주면 된다 식으로 운영을 해보려고 해서 그렇습니다.

* 질문에 상품코드을 물어보셨고 수정된 코드는 카트테이블 it_id에 잘 들어 갑니다.

라고 하셨는데요 .... AUTO_INCREMENT 이 친구만 들어가면 에러가 보여지네요.

3543907947_1591757109.4897.png

 

저 같으면 여분 필드를 활용해서 이용할 것 같습니다.

물론 주문서에는 그 상품에 관한 여분필드 정보를 갖고 오게끔 하면 될 것 같습니다.

어느 사용자분이 올려주신 판매자 이메일 필드를 이용하는 방법과
여분필드는 다른 용도로 사용을 했었구요.

it_id 상품코드가 붙으면서 자동으로 분류명(ca_id)이 붙어 두번 입력하는
번거로움과 등록 상품의 순서 .... 숫자를 기억해야 하는것을 없애고자
한것 입니다. 플래토님과 dragon님의 답변을 참고로 다각도로 생각을
해봐야 겠습니다. 두분 고맙습니다.

it_id 가 참조로 되는 영역들에서는 varchar를 int로 변경하는 작업들을 다 하셔야 합니다.

플래토님 ... DB만 새로 덮어 쒸우고 ....

아무것도 입력 안된상태 에서 위 작업을 마치면 적용 가능 하다는 

말씀 이신거죠?

 

AUTO_INCREMENT 는 g5_shop_item it_id 에서 한번만 해주면 되는거죠?


영카트 빈 형태로 만든상황에서 it_id를 순차로 만드신다는 목적을 처리하기 위해서
적용하는 것에 한해서 말씀드린것입니다.

int 형태로 바꾸는게 먼저이고
키에 해당되는 필드인 it_id 에 순차증가값인 it_id로 변경하시는게 맞고
입력처리하는 로직들에서 it_id를 기록/갱신하는 로직을 제거하셔야합니다.
물론 g5_shop_item 에 해당되는것이구요

그외의 it_id를 참조로 사용하는 테이블들에서 varchar로 사용해도 상관은 없겠지만
안정성을 위해서 int로 변경하는게 좋지만.. 다른 로직들이 수정되는게 불편하시면
varchar로 사용하셔도 됩니다.

it_id 입력창에 자동으로 카운터 된 숫자가 1씩 증가하게 해 놨습니다.

복사항목도 마찬 가지구요. 

 

분류명(자동으로)+상품코드가 상품페이지에 보여지구요. 검색+주문서만 손보면 될듯 하네요. 

 

두분 고맙습니다. 

g5_shop_cart 테이블이 통째로 사라져서 난감 하네요. 

받아서 올려도 안되고 .... 백업 후 재설치 해야 하는건지 ....^^

 

다행히도 다른 계정에 있던걸 백업 후 다시 업로드 했더니

원상복구 되었습니다. 고맙습니다.

재차 확인해 보니 10자리의 숫자가 1씩 증가는 하네요. 

 

숫자를 줄이고 1씩 증가하는 함수를 못 찾겠네요.

 

<?php echo time(); ?> 식으로 하면 10자리 불러오고 1씩 증가는 합니다.

답변을 작성하시기 전에 로그인 해주세요.
QA 내용 검색
질문등록
전체 17
© SIRSOFT
현재 페이지 제일 처음으로