错误:表中不存在列(外键引用)
Posted
技术标签:
【中文标题】错误:表中不存在列(外键引用)【英文标题】:Error: Column doesn't exist in table (Foreign Key referencing) 【发布时间】:2016-03-29 15:25:30 【问题描述】:问题 我正在尝试将 Customer 表中的 ID 列链接到 Purchases 表中的 C_ID。我还在学习 SQL,所以我的知识很浅,不知道为什么会发生这个错误。如果有人可以提供解决方案并指出我出错的地方,那就太好了。
错误信息
SQL 代码
CREATE TABLE Customer (
ID INTEGER,
Firstname VARCHAR (15),
Lastname VARCHAR (15),
Address VARCHAR (254),
Postcode VARCHAR (8),
Email VARCHAR (254),
Phoneno INTEGER,
Points INTEGER,
PRIMARY KEY (ID)
);
CREATE TABLE Purchases (
C_ID INTEGER,
GameName VARCHAR(30),
ConsoleType VARCHAR (20),
Price VARCHAR (254),
PaymentType VARCHAR (20),
Date TIMESTAMP,
PointsGained INTEGER,
PRIMARY KEY (C_ID),
FOREIGN KEY (ID) REFERENCES Customer(ID)
);
【问题讨论】:
错误消息有时非常具体。这是其中之一。如果你想成为一名程序员,阅读和解释错误信息是你需要的技能。这一篇是如此清晰和具体,以至于它表明你可能根本没有读过它。话虽如此,有时信息是模糊的,但这是另一回事。 【参考方案1】:我认为你放错了主键和外键列,你也没有添加采购表主键列
CREATE TABLE Purchases
(
ID INTEGER, -- Primary key column
C_ID INTEGER,
GameName VARCHAR(30),
ConsoleType VARCHAR (20),
Price VARCHAR (254),
PaymentType VARCHAR (20),
Date TIMESTAMP,
PointsGained INTEGER,
PRIMARY KEY (ID),
FOREIGN KEY (C_ID) -- Replace ID with C_ID
REFERENCES Customer(ID)
);
【讨论】:
领先我一秒 :-) @ZoharPeled - 哈哈,我们俩也有相似的想法:P【参考方案2】:Purchases
表中没有名为 ID
的列。
在我看来应该是这样的:
CREATE TABLE Purchases (
ID INTEGER,
C_ID INTEGER,
GameName VARCHAR(30),
ConsoleType VARCHAR (20),
Price VARCHAR (254),
PaymentType VARCHAR (20),
Date TIMESTAMP,
PointsGained INTEGER,
PRIMARY KEY (ID),
FOREIGN KEY (C_ID) REFERENCES Customer(ID)
);
所以ID
列是主键,C_ID
列是客户的外键。
【讨论】:
以上是关于错误:表中不存在列(外键引用)的主要内容,如果未能解决你的问题,请参考以下文章
where一个字段中不存在某个字符,怎么写mysql判断语句
SQL Server Compact 在创建表中不支持关键字“外键引用”还是我犯了错误?