【问题标题】:Creating three related tables in MySQL 5.5在 MySQL 5.5 中创建三个相关表
【发布时间】:2014-11-14 20:36:30
【问题描述】:
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 我可以创建 Person 表,但不能创建 Locations 或 Assets 表。
1005 和 (errno 150) 建议表示赞赏。我认为我围绕外键的陈述顺序可能不正确,但不确定如何?

【问题讨论】:

    标签: mysql workbench


    【解决方案1】:

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

    您需要一个 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;
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-12-01
      • 1970-01-01
      • 1970-01-01
      • 2019-07-10
      • 2012-01-27
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多