sql - 不正确的表定义:只能有一个自动列,并且必须定义为键
问题描述
我读到此错误通常是由于尝试拥有多个主键引起的,但在我的表中似乎并非如此,我只有一个主键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)
);
我收到此错误:
不正确的表定义:只能有一个自动列,并且必须定义为键
解决方案
将外键列定义为自动增量是没有意义的。父列(大概)是,但没有引用列。
您的表似乎也缺少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)
);
推荐阅读
- java - Quarkus:当与带有消息签名的处理器方法一起使用时,忽略响应式消息传递的失败策略会引发 CIRCULAR REFERENCE 错误
- json - 在 clasp.json 中设置 rootDir 后,使用 clasp.push 推送谷歌应用脚本失败
- logic - IFTTT 是生产系统还是只是一些规则
- mysql - 如何根据来自其他几个表的数据的聚合选择来选择连接表中的条目?
- python - 在每行中查找最大值的列和行名称
- c# - 另一个表单中的 C# 访问类型
- prolog - 计算序言谓词的句法复杂度
- firebase - Firebase (Flutter) - 尝试通过 getDownloadUrl() 访问云存储上的资源时应用检查失败
- python-3.x - 用户在电报机器人手机中接收后自动全屏显示照片
- regex - 将变量过滤到特定部分/字符 | 从过滤的文本中自动设置分辨率 | Ubuntu,重击