2014-11-14 24 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;