【发布时间】:2019-04-11 07:06:03
【问题描述】:
我正在尝试创建一些基本的 SQL 表,但是我不断收到以下错误:
引用表“CART”中没有与外键“FK__ORDERS__CART_ID__2B3F6F97”中的引用列列表匹配的主键或候选键
这是我正在使用的当前代码。
create table USERS
(
User_ID int NOT NULL primary key,
Address varchar(30) NOT NULL,
Email varchar(30) NOT NULL,
Password varchar(30) NOT NULL,
Phone varchar(30) NOT NULL,
F_Name varchar(30) NOT NULL,
L_Name varchar(30) NOT NULL,
Date_of_Birth varchar(30) NOT NULL
)
create table PAYMENT
(
User_ID int NOT NULL primary key,
Credit_Card varchar(30) NOT NULL,
Debit_Card varchar(30) NOT NULL,
Google_Pay varchar(30) NOT NULL,
Apple_Pay varchar(30) NOT NULL,
Paypal varchar(30) NOT NULL,
foreign key (User_ID)
references USERS(User_ID)
)
create table CART
(
User_ID int NOT NULL,
Cart_ID int NOT NULL,
Total_Price float NOT NULL,
primary key (Cart_ID, User_ID),
foreign key(User_ID)
references USERS(User_ID)
)
create table ORDERS
(
Order_ID int NOT NULL primary key,
Total_Price float NOT NULL,
Payment_Method varchar(30) NOT NULL,
User_ID int NOT NULL,
CART_ID int NOT NULL,
foreign key (User_ID)
references USERS(User_ID),
foreign key (Cart_ID)
references CART(Cart_ID),
)
create table ORDER_HISTORY
(
User_ID int NOT NULL,
Order_ID int NOT NULL,
primary key (User_ID, Order_ID),
foreign key (User_ID)
references USERS(User_ID),
foreign key (Order_ID)
references ORDERS(Order_ID)
)
我尝试过修改并移动它们,但无法让错误消失。我怀疑这可能非常简单和明显,但由于我对 SQL 很陌生,我可能会错过它。
【问题讨论】:
-
支付应该有paymentid作为主键,购物车应该有cartid。后者将解决您的错误!
标签: sql sql-server foreign-keys sql-server-2016 ddl