2013-03-14 3 views
2

오른쪽 그래서 코드는 다음과 같은 간다 : 나는 드롭있어MySQL은 오류 1005

CREATE TABLE Seller (
sID INT AUTO_INCREMENT 
    PRIMARY KEY, 
sName CHAR (10), 
sAddress CHAR (30) 
)ENGINE = INNODB; 
CREATE TABLE Sale (
sID INT AUTO_INCREMENT, 
iName CHAR(10), 
CONSTRAINT sa_pk 
    PRIMARY KEY (sID, iName), 
CONSTRAINT sa_fk1 
    FOREIGN KEY (sID) 
    REFERENCES Seller (sID) 
    ON UPDATE CASCADE, 
CONSTRAINT sa_fk2 
    FOREIGN KEY (iName) 
    REFERENCES Item (iName) 
    ON UPDATE CASCADE 
)ENGINE = INNODB; 
CREATE TABLE Item (
iPrice REAL, 
iStock INT, 
iName CHAR(10) 
    PRIMARY KEY, 
iDescription CHAR (30) 
)ENGINE = INNODB; 
CREATE TABLE Copy (
oQuantity INT, 
iName CHAR(10), 
CONSTRAINT co_pk 
    PRIMARY KEY (oQuantity, iName), 
CONSTRAINT co_fk1 
    FOREIGN KEY (oQuantity) 
    REFERENCES Orders (oQuantity) 
    ON UPDATE CASCADE, 
CONSTRAINT co_fk2 
    FOREIGN KEY (iName) 
    REFERENCES Item (iName) 
    ON UPDATE CASCADE 
)ENGINE = INNODB; 
CREATE TABLE Orders (
oSeller CHAR (10), 
oTypes CHAR (10), 
oQuantity INT, 
oPrice REAL, 
oID INT AUTO_INCREMENT 
    PRIMARY KEY 
)ENGINE = INNODB; 
CREATE TABLE Customer (
cID INT AUTO_INCREMENT 
    PRIMARY KEY, 
cName CHAR (10), 
cAddress CHAR (30) 
)ENGINE = INNODB; 

난 적어도 그들 모두 복사 및 판매를 제외하고 그들이 oooor을 제거하고이 스크립트를 실행 시작 그래서 모든 시간에 명령 . 내가 그들을 떨어 뜨리려고 할 때마다 그들이 결코 만들어지지 않을 때 실패한다. 나는 계속해서 ERROR 1005 (HY000) 쓰레기가 계속 이어져서 테이블 x을 만들 수 없다. 이 성가신 해충 문제를 분류하도록 도와주세요. 타르! 당신의 sale 테이블에서

답변

1

, 당신은

CONSTRAINT sa_fk2 FOREIGN KEY (iName) REFERENCES Item (iName) 
    ON UPDATE CASCADE 

동안이 당신이 나중에 Item 테이블을 만들 수 있습니다. Copy 테이블을 만들기위한


, 당신은 Order 테이블의 oQuantity 필드에 인덱스가 필요합니다.

INDEX `oQty` (`oQuantity`) 

위 항목을 주문 테이블에 추가하면 테이블을 만들 수 있습니다.

여기는 sqlfiddle입니다.

+0

그러나 그 항목을 정렬하지 못했습니다. ( –

+0

복사 표에서와 마찬가지로 나중에 '주문'표를 만듭니다. – hjpotter92

+0

복사가 마지막으로 오도록 주사위를 다시 배열했습니다. ( –