sql - 引用列的数量必须与引用的列匹配
问题描述
我对 SQL 比较陌生,我不断收到以下错误“外键引用列表中的列数不等于引用列表中的列数。”
create table client
(name varchar(30),
phone int,
city varchar(20),
state char(2) CHECK(state='MN' OR state='ND' OR state='SD' OR state='WI' or state='IA'),
primary key(name,phone));
create table owns_vehicle
(name varchar(30),
phone int,
vin varchar(10),
primary key(name, phone, vin),
foreign key(name,phone) references client);
create table service_appointment
(mydate date,
vin varchar(10),
mechanic varchar(15),
description varchar(30) NOT NULL,
cost int CHECK (cost>=0),
primary key(mydate,vin),
foreign key(vin) references owns_vehicle);
这是导致问题的行:
foreign key(vin) references owns_vehicle);
有谁知道我为什么会收到这个错误?
解决方案
您尝试引用owns_vehicle
,因此您需要引用所有表格PRIMARY KEY
列,即name, phone, vin
. 但是您的外键只有vin
,因此name, phone
缺少两列 ( )。
推荐阅读
- three.js - 我无法在 JSFiddle 中输入 dat.gui
- java - 我需要以编程方式将我的 APP 中的借记卡添加到 Google 支付
- c++ - 嵌套模板函数的重载
- postgresql - 如何在postgres中每N行打印列标题?
- python - 使用 self.pack 和 self.grid 可以在没有类的情况下使用,但使用它们会失败
- docker - Nginx 和 Flask 是否应该在同一个容器中运行
- angular - 即使未选择单选按钮,Angular Reactive 也会验证
- kotlin - Kotlin - 嵌套函数与具有 1 个调用点的私有函数
- android - Gradle 同步失败:删除了对使用早于 2.6 的 Gradle 版本的构建的支持 [...]。您当前使用的是 Gradle 版本 2.2.1
- django - 将 SQL 查询转换为制作精良的 QuerySet