2014-11-14 4 views
1
Use snhpinventorytest; 
CREATE TABLE Persons (
    PersonID INT(11) unsigned NOT NULL auto_increment, 
     PRIMARY KEY (PersonID), 
    FirstName Varchar (50), 
    Lastname varchar(50) 
) ENGINE=INNODB; 

Use snhpinventorytest; 
CREATE TABLE if not exists Locations (
    LocationID INT(11) UNSIGNED NOT NULL auto_increment, 
    PRIMARY KEY (LocationID), 
    PersonID int(11) unsigned, 
     INDEX PersonID_IDX (PersonID), 
    BuildingName varchar(50), 
    LocationType varchar(50), 
    RoomNumber varchar (20), 
     FOREIGN KEY (FK_PersonID) REFERENCES Person(PersonID) 
      ON DELETE CASCADE 
      ON UPDATE CASCADE 
) ENGINE=INNODB; 

Use snhpinventorytest; 
CREATE TABLE if not exists assets (
    AssetID INT(11) UNSIGNED NOT NULL auto_increment, 
    PRIMARY KEY (AssetID), 
    PersonID int(11) unsigned, 
     INDEX PersonID_IDX (PersonID), 
    FOREIGN KEY (FK_PersonID) REFERENCES Person(PersonID) 
     ON DELETE CASCADE 
     ON UPDATE CASCADE 
) Engine=INNODB; 

MySQL을 처음 사용했습니다. Workbench 6.2 사용 위치 테이블을 만들 수는 있지만 위치 테이블은 만들 수 없습니다.
1005 및 (errno 150) 제안 감사드립니다. 외래 키에 관한 나의 성명서의 순서가 틀릴 수도 있지만 확실하지는 않습니까?MySQL 5.5에서 세 개의 관련 테이블 생성하기

답변

0

작동하려면 코드를 변경해야합니다.

당신은 CONSTRAINT 이름이 필요하고 그것을 독특한 것으로 만들어야합니다. 그런 다음 올바른 외래 키를 제공하고 이름은 제공하지 않아야합니다. 예를 FOREIGN KEY를 들어 (FK_PersonID)도 FOREIGN KEY (PersonID)

, 한 번 사용할 수 있습니다 : 당신이 USE snhpinventorytest; 3 회를 사용할 필요가 없습니다 해야한다.

나는이

이 코드

USE snhpinventorytest; 
CREATE TABLE Persons (
    PersonID INT(11) unsigned NOT NULL auto_increment, 
     PRIMARY KEY (PersonID), 
    FirstName Varchar (50), 
    Lastname varchar(50) 
) ENGINE=INNODB; 

CREATE TABLE locations (
LocationID int(11) unsigned NOT NULL AUTO_INCREMENT, 
PersonID int(11) unsigned DEFAULT NULL, 
BuildingName varchar(50) DEFAULT NULL, 
LocationType varchar(50) DEFAULT NULL, 
RoomNumber varchar(20) DEFAULT NULL, 
PRIMARY KEY (LocationID), 
KEY PersonID_IDX (PersonID), 
CONSTRAINT FK_PersonID1 FOREIGN KEY (PersonID) REFERENCES persons (PersonID) ON DELETE CASCADE ON UPDATE CASCADE 
) ENGINE=InnoDB DEFAULT CHARSET=utf8; 

CREATE TABLE IF NOT EXISTS assets (
    AssetID INT(11) UNSIGNED NOT NULL auto_increment, 
    PRIMARY KEY (AssetID), 
    PersonID int(11) unsigned, 
     INDEX PersonID_IDX (PersonID), 
    CONSTRAINT FK_PersonID2 FOREIGN KEY (PersonID) REFERENCES Persons(PersonID) 
     ON DELETE CASCADE 
     ON UPDATE CASCADE 
) Engine=INNODB; 
을 시도 도움이되기를 바랍니다
관련 문제