You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

基于tb_person中person_id=1向tb_meals插入数据失效问题求助

问题分析与解决方案

你的代码核心问题是表名/字段名不匹配,同时存在枚举值大小写不一致、自增主键错误赋值的问题,这些问题导致条件判断逻辑失效。以下是修正后的完整代码和关键说明:

修正后的SQL代码

-- 创建餐食表(统一表名,保持与后续操作一致)
create table if not exists tb_meal(
meal_id int primary key auto_increment,
meal_type enum("Vegan","Meat","Fish") not null,
meal varchar(100) not null,
price double,
meal_date date not null,
status enum("pending","done") default("pending")
);

-- 创建人员表(统一表名,保持与后续操作一致)
create table if not exists tb_person(
person_id int primary key auto_increment,
person_name varchar(100) not null,
office enum("Student","Teacher") not null,
date_order_made DATETIME default now(),
meal_ int,
FOREIGN KEY (meal_) REFERENCES tb_meal(meal_id)
);

-- 插入人员数据(修正表名,枚举值与定义大小写一致)
insert into tb_person(person_name,office) values("ao","Student"),("Tb","Teacher");

-- 插入餐食数据(修正表/字段名,移除自增主键手动赋值,确保条件判断生效)
INSERT INTO tb_meal (meal_type, meal, price, meal_date)
SELECT "Meat", "laranajaa", 29.30, '2022-03-22'
FROM DUAL
WHERE EXISTS (SELECT 1 FROM tb_person WHERE person_id = 1);

关键修正点

  • 表/字段名统一:原代码创建的表是tb_meal和tb_person,但插入查询时用了tb_almocos、tb_pessoas这类不匹配的名称,字段名也存在对应错误(比如id_almocos对应meal_id),导致SQL无法定位正确的表和字段,条件判断自然失效。
  • 自增主键处理:meal_id是自增主键,插入时无需手动指定值,数据库会自动生成唯一ID。
  • 枚举值匹配:原插入人员数据时用了小写的"student",但表定义中枚举是"Student",会触发插入错误,修正为一致的大小写格式。
  • 条件逻辑生效:修正后的EXISTS子句查询正确的tb_person表和person_id字段,只有当person_id=1的记录存在时,才会执行餐食数据的插入操作。

内容的提问来源于stack exchange,提问作者cdb

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.25 14:25:11