2014-11-14 28 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新手。使用工作台6.2 我可以创建人员表格,但不能创建位置或资产表格。
1005和(errno 150)建议赞赏。我认为我对外键的陈述顺序可能不正确,但不知道如何?在MySQL 5.5中创建三个相关表格

回答

0

您必须更改您的代码才能正常工作。

您需要一个CONSTRAINT名称并使其具有唯一性。然后你需要提供正确的FOREIGN KEY而不是任何名字。 例如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;