weixin_73866154 2022-11-20 15:36 采纳率: 40%
浏览 5
已结题

SQL添加外键约束提示错误怎么回事啊

create database XS
create table 商店
(商店编号 char(7) not null,
商店名 nvarchar(20) not null unique,
地址 nvarchar(20),
联系电话 char(11),
)
create table 商品
(商品号 char(7) not null,
商品名 nvarchar(20) not null unique,
进货价格 nvarchar(20),
进货日期 nchar(11),
销售价格 nchar(11),
)
create table 购物
(商店名 nvarchar(20) not null,
商品名 nvarchar(20) not null,
购买数量 nvarchar(20) not null,
购买日期 nchar(11)
)
alter table 商店
add constraint PK_商店_商店编号 primary key(商店编号)
alter table 商品
add constraint PK_商品_商品名 primary key(商品名)
alter table 购物
add constraint PK_购物_商店名_商品名 primary key(商店名,商品名)
alter table 商店
add constraint FK_商店_购物_商店名 foreign key(商店名)
references 购物(商店名)

消息 1776,级别 16,状态 0,第 36 行
在被引用表 '购物' 中没有与外键 'FK_商店_购物_商店名' 中的引用列列表匹配的主键或候选键。
消息 1750,级别 16,状态 1,第 36 行
无法创建约束或索引。请参阅前面的错误。

  • 写回答

2条回答 默认 最新

  • curating 2022-11-20 15:53
    关注

    建立外键前,引用表的列需要为主键或者唯一约束。
    由于购物表已有主键alter table 购物 add constraint PK_购物_商店名_商品名 primary key(商店名,商品名),
    所以可以先建一个唯一约束,即可完成创建外键。
    alter table 购物 add constraint UK_购物_商店名 unique(商店名);
    alter table 商店 add constraint FK_商店_购物_商店名 foreign key(商店名) references 购物(商店名);

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 11月28日
  • 已采纳回答 11月20日
  • 创建了问题 11月20日

悬赏问题

  • ¥100 set_link_state
  • ¥15 虚幻5 UE美术毛发渲染
  • ¥15 CVRP 图论 物流运输优化
  • ¥15 Tableau online 嵌入ppt失败
  • ¥100 支付宝网页转账系统不识别账号
  • ¥15 基于单片机的靶位控制系统
  • ¥15 真我手机蓝牙传输进度消息被关闭了,怎么打开?(关键词-消息通知)
  • ¥15 装 pytorch 的时候出了好多问题,遇到这种情况怎么处理?
  • ¥20 IOS游览器某宝手机网页版自动立即购买JavaScript脚本
  • ¥15 手机接入宽带网线,如何释放宽带全部速度