错误:表中不存在列(外键引用)

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 列是客户的外键。

【讨论】:

以上是关于错误:表中不存在列(外键引用)的主要内容,如果未能解决你的问题,请参考以下文章

错误:PostgreSQL 中不存在列

where一个字段中不存在某个字符,怎么写mysql判断语句

SQL Server Compact 在创建表中不支持关键字“外键引用”还是我犯了错误?

数据库概念和操作数据库的命令

你的错误 1 命名空间“System”中不存在类型或命名空间名称“Linq”(是缺少程序集引用吗?) 3行14列,纠正

添加列作为外键会给出外键约束中引用的 ERROR 列不存在