database.sarang.net
UserID
Passwd
Database
DBMS
ㆍMySQL
PostgreSQL
Firebird
Oracle
Informix
Sybase
MS-SQL
DB2
Cache
CUBRID
LDAP
ALTIBASE
Tibero
DB 문서들
스터디
Community
공지사항
자유게시판
구인|구직
DSN 갤러리
도움주신분들
Admin
운영게시판
최근게시물
MySQL Q&A 30289 게시물 읽기
No. 30289
foreign_key 무시하고 컬럼타입 변경 하는 방법 없을까요?
작성자
김상묵(mook3710)
작성일
2012-07-20 17:54
조회수
8,332

CREATE TABLE IF NOT EXISTS product (

   code              SMALLINT UNSIGNED     NOT NULL AUTO_INCREMENT COMMENT '코드(0~65535)',     
   procode           VARCHAR(20)           DEFAULT ''  NOT NULL COMMENT '관리코드',        
   classcode         SMALLINT UNSIGNED     DEFAULT 1   NOT NULL COMMENT '상품분류코드',        
   bcode            VARCHAR(30)           DEFAULT ''  NOT NULL COMMENT '바코드',        
   model            VARCHAR(30)           DEFAULT ''  NOT NULL COMMENT '모델명',        
   proname           VARCHAR(50)           DEFAULT ''  NOT NULL COMMENT '상품명',        
   norm             VARCHAR(30)           DEFAULT ''  NOT NULL COMMENT '규격',        
   unit             VARCHAR(30)           DEFAULT ''  NOT NULL COMMENT '단위',        
   buyprice       DOUBLE                DEFAULT 0   NOT NULL COMMENT '매입가',        
   saleprice       DOUBLE                DEFAULT 0   NOT NULL COMMENT '매출가',        
   gongprice     DOUBLE                DEFAULT 0   NOT NULL COMMENT '공임비',        
   taxmode           TINYINT(1)            DEFAULT 0   NOT NULL COMMENT '부가세(0:과세,1:면세)',        
   location          VARCHAR(30)           DEFAULT ''  NOT NULL COMMENT '상품위치',        
   bigo              VARCHAR(255)          DEFAULT ''  NOT NULL COMMENT '비고',        
   pic1             VARCHAR(200)          DEFAULT ''  NOT NULL COMMENT '사진1',        
   pic2             VARCHAR(200)          DEFAULT ''  NOT NULL COMMENT '사진2',        
   pic3             VARCHAR(200)          DEFAULT ''  NOT NULL COMMENT '사진3',        
   pic4             VARCHAR(200)          DEFAULT ''  NOT NULL COMMENT '사진4',        
   pic5             VARCHAR(200)          DEFAULT ''  NOT NULL COMMENT '사진5',        
   pic6             VARCHAR(200)          DEFAULT ''  NOT NULL COMMENT '사진6',        
   hidden            TINYINT(1)            DEFAULT 0  NOT NULL COMMENT '숨김(0:사용, 1:숨김)',          
   
   INDEX idx_product_classcode(classcode),
   
   PRIMARY KEY (code),
   
   CONSTRAINT product_classcode_fk FOREIGN KEY(classcode)
   REFERENCES prodclass(code)
   ON UPDATE CASCADE

) COMMENT = '부품' TYPE = InnoDB;

 

CREATE TABLE IF NOT EXISTS invn_real (

   code          SMALLINT UNSIGNED   NOT NULL AUTO_INCREMENT COMMENT '코드(0~65535)',     
   scode         SMALLINT UNSIGNED   DEFAULT 1  NOT NULL COMMENT '창고코드',          
   pcode         SMALLINT UNSIGNED   DEFAULT 0  NOT NULL COMMENT '상품코드',          
   qnt        DOUBLE             DEFAULT 0  NOT NULL COMMENT '현재고',          
   
   INDEX idx_invn_real_scode (scode),  #창고코드
   INDEX idx_invn_real_pcode (pcode),  #부품코드
   
   PRIMARY KEY (code),
   
   CONSTRAINT invn_real_scode_fk FOREIGN KEY(scode)
   REFERENCES storage(code)
   ON UPDATE CASCADE,
   
   CONSTRAINT invn_real_pcode_fk FOREIGN KEY(pcode)
   REFERENCES product(code)
   ON UPDATE CASCADE

) COMMENT = '현재고' TYPE = InnoDB;

 

 

위와 같이 부품테이블과 부품현재고 테이블을 만들었습니다.

 

그런데 부품코드를 SMALLINT 만들었는데 데이터가 늘어남에 따라서 int로 변경해야 합니다.

 

헌데 FOREIGN KEY 문제로

 

ALTER TABLE `invn_real`  CHANGE COLUMN `pcode` `pcode` INT(10) UNSIGNED NOT NULL DEFAULT '0' COMMENT '상품코드' AFTER `scode`;


해당 구문이 오류를 발생합니다.

혹시 방법 없을까요?

SET foreign_key_checks = 0;
ALTER TABLE `invn_real`  CHANGE COLUMN `pcode` `pcode` INT(10) UNSIGNED NOT NULL DEFAULT '0' COMMENT '상품코드' AFTER `scode`;
SET foreign_key_checks = 1;


이런식으로 해도 안되네요. ㅡㅡ;;

도움 부탁드립니다.
이 글에 대한 댓글이 총 1건 있습니다.
형 변경의 경우는 SET FOREIGN_KEY_CHECKS =0 로 안되는 것으로 알고 있습니다.
 
ALTER TABLE ... DROP FOREIGN KEY ... 구문을 통해 외래키 제약을 해제한 후에, 형 변경을 하고, 다시 외래키 제약을 추가하셔야할 것으로 보입니다.
 
박현우(lqez)님이 2012-07-24 15:39에 작성한 댓글입니다.
[Top]
No.
제목
작성자
작성일
조회
30292서버export 시킨 sql -> import 시킬때 에러 [1]
김양훈
2012-07-27
7683
30291Cardinality가 `none` 으로 나옵니다. [1]
정진섭
2012-07-26
8710
30290MySQL 이중화 관련 질문. ReadOnly DB사용 [3]
백동주
2012-07-24
8809
30289foreign_key 무시하고 컬럼타입 변경 하는 방법 없을까요? [1]
김상묵
2012-07-20
8332
30288Cygwin 에 mysql 설치 시 질문 입니다. [1]
십년만에
2012-07-18
9305
30287use index 사용하기 [1]
태양
2012-07-17
9826
30285데이타베이스 백업 어떻게 하는지 좀 알려주세요!
이정환
2012-07-15
7504
Valid XHTML 1.0!
All about the DATABASE... Copyleft 1999-2023 DSN, All rights reserved.
작업시간: 0.050초, 이곳 서비스는
	PostgreSQL v16.1로 자료를 관리합니다