首页 > 解决方案 > 不正确的表定义:只能有一个自动列,并且必须定义为键

问题描述

我读到此错误通常是由于尝试拥有多个主键引起的,但在我的表中似乎并非如此,我只有一个主键OfferID

CREATE TABLE PropertyOffers 
(
    OfferID INT(10) AUTO_INCREMENT,
    CONSTRAINT PRIMARY KEY (OfferID),
    ClientID INT(8) AUTO_INCREMENT,
    AgentID INT(8) AUTO_INCREMENT,
    CONSTRAINT regstufk FOREIGN KEY (ClientID) REFERENCES Clients(ClientID),
    CONSTRAINT regstufk FOREIGN KEY (AgentID) REFERENCES Agents(AgentID),
    CONSTRAINT propertyoffer FOREIGN KEY (PropertyID) REFERENCES Properties(PropertyID)
);

我收到此错误:

不正确的表定义:只能有一个自动列,并且必须定义为键

标签: sqldatabase

解决方案


将外键列定义为自动增量是没有意义的。父列(大概)是,但没有引用列。

您的表似乎也缺少PropertyID您正在设置外键约束的 column 声明。

所以,大概:

CREATE TABLE PropertyOffers (
    OfferID INT(10) AUTO_INCREMENT,
    CONSTRAINT PRIMARY KEY (OfferID),
    ClientID INT(8),
    AgentID INT(8),
    PropertyID INT(8),
    CONSTRAINT regstufk FOREIGN KEY (ClientID) REFERENCES Clients(ClientID),
    CONSTRAINT regstufk FOREIGN KEY (AgentID) REFERENCES Agents(AgentID),
    CONSTRAINT propertyoffer FOREIGN KEY (PropertyID) REFERENCES Properties(PropertyID)
);

推荐阅读