当前位置: 首页 > 知识库问答 >
问题:

SQL不允许将数据添加到外键中[重复]

罗韬
2023-03-14

我在MySQL中遇到了一个错误,它不允许我输入外键数据。这是我的数据:

 create table Location(
LocationID char(4) primary key,
LocationName char(20),
LocationState char(3),
LocationPostCode char(4),
StartLoc char(3),
EndLoc char(3)
);
drop table Location;
insert into Location values ('L10','Norwood','TAS','7250','L31','L30');
insert into Location values ('L11','Cressy','TAS','7586','L33','L32');
insert into Location values ('L12','Launceston','TAS','7907','L35','L34');
insert into Location values ('L13','Epping Forest','TAS','7354','L37','L36');
insert into Location values ('L14','Avoca','TAS','7812','L39','L38');
insert into Location values ('L15','Royal George','TAS','7009','L41','L40');
insert into Location values ('L16','Westbury','TAS','7893','L43','L42');

create table TripSchedule(
ScheduleID char(3),
foreign key(StartLoc) references Location(StartLoc),
foreign key(EndLoc) references Location(EndLoc),
foreign key(RequestID) references BookingReq(RequestID),
foreign key(TruckVINNum) references Allocation(TruckVINNum),
foreign key(TransportID) references Allocation(TransportID),
foreign key(StaffID) references Staff(StaffID),
TripStart char(40),
TripEnd char(40)
);

drop table TripSchedule;
insert into TripSchedule values('S23',L11','L10', 'R101', 'VO20','T1','S1''6th of December 2020-1:30pm','7th of December 2021-1:30 pm');
insert into TripSchedule values('S24', 'L13','L12', 'R102', 'VO20','T1','S1','6th of December 2020-1:30pm','7th of December, 2021-1:30 pm');
insert into TripSchedule values('S25', 'L15','L14', 'R103', 'VO20','T1','S1','6th of December 2020-1:30pm','7th of December, 2021-1:30 pm');
insert into TripSchedule values('S26', 'L17','L16', 'R104', 'VO20','T1','S1','6th of December 2020-1:30pm','7th of December, 2021-1:30 pm');
insert into TripSchedule values('S27', 'L19','L18', 'R105', 'VO20','T1','S1','6th of December 2020-1:30pm','7th of December, 2021-1:30 pm');
insert into TripSchedule values('S28', 'L21','L20', 'R101', 'VO20','T1','S1','6th of December 2020-1:30pm','7th of December, 2021-1:30 pm');
insert into TripSchedule values('S29', 'L23','L22', 'R106', 'VO20','T1','S1','6th of December 2020-1:30pm','7th of December, 2021-1:30 pm');

我遇到的问题有点奇怪,它与位置和行程表之间的关系有关。SQL将允许输入TripSchedule表的前三行插入值,但是其余的插入值给出错误:“错误代码:1452。无法添加或更新子行:外键约束失败(assessment.tripschedule,CONSTRAINT tripschedule_ibfk_1外键(StartLoc)引用位置(LocationID))。

我曾尝试将StartLoc和EndLoc引用为Location表中的主键,也曾尝试从Location表完全删除StartLoc与EndLoca,但仍然遇到同样的问题。有什么解决办法吗?

共有1个答案

全心思
2023-03-14

外键约束要求位置存在,以便将其指定为StartLoc。第四次到第七次插入将StartLoc指定为L17、L19、L21和L23,这些都不是存在的LocationID。

在插入引用位置记录的Trip附表记录之前创建位置记录,或者删除外键约束:

alter table TripSchedule drop constraint tripschedule_ibfk_1;
 类似资料:
  • 如果我在 SQL Server 2008 中使用以下 SQL 命令来更新具有外键约束的表: 是表中我的FK列。我正在尝试引用我的表中的。我收到这个错误: 外键“UserID”引用引用表“员工”中的无效列“UserID”。

  • 问题内容: 我有一个要添加位列的表,对于所有现有数据,我希望将其默认设置为false。 如何更改表,使其在为现有行插入false之前可以指定NOT NULL? 我是否应该将其创建为可为空,而不是将其切换为不可为空? 问题答案: 您可以添加该列并提供用于所有现有行的默认值。

  • 若要添加一个外键,点击工具栏的 “外键”按钮,并由子表拖拉一个字段到父表的字段。若要显示或隐藏链接的名标签,简单地在属性窗格中勾选或取消勾选“显示名”选项。 当你移动滑鼠到一个外键连接器时,父和子表的边界会分别变为绿色和蓝色。此外,父和子表的参考属性均会高亮显示。 在画布中外键对象的弹出式菜单选项包括: 选项 描述 设计关系 在表设计器中编辑外键。 基数在 表名1 设置基数在表名1:无、唯一、多个

  • 若要添加一个外键,点击工具栏的 “外键”按钮,并由子表拖拉一个字段到父表的字段。若要显示或隐藏链接的名标签,简单地在属性窗格中勾选或取消勾选“显示名”选项。 当你移动滑鼠到一个外键连接器时,父和子表的边界会分别变为绿色和蓝色。此外,父和子表的参考属性均会高亮显示。 在画布中外键对象的弹出式菜单选项包括: 选项 描述 设计关系 在表设计器中编辑外键。 基数在 表名1 设置基数在表名1:无、唯一、多个

  • 我有一个来自excel电子表格的数据框,其中我找到了每个域出现的频率。我想添加域频率计数到它的相应域。 下面是查找频率并尝试将其添加到相应域的代码。 当我从数据帧打印出频率时:

  • 问题内容: 我正在尝试创建数学测验,我只希望用户能够输入数字,无论它们是负数还是正数。有什么办法吗?我曾经考虑过使用正则表达式,但听说它们不好用。我尝试使用按键侦听器,但是如果用户粘贴该怎么办?我尝试解析字符串以获取整数,但是负号将不起作用。 有任何想法吗? 问题答案: 使用DocumentFilter: NumberOnlyFilter.java: 然后您可以像这样使用它: