首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

姜戈。为什么我的外键与父主键中的相同数据不匹配

在关系型数据库中,外键是用来建立表与表之间关系的一种机制。外键约束确保了子表中的外键值必须与父表中的主键值相匹配,以保持数据的一致性和完整性。

如果你的外键与父主键中的相同数据不匹配,可能有以下几个原因:

  1. 数据不一致:可能是由于数据录入错误或者数据更新不及时导致的。你可以检查父表和子表中的数据,确保它们的值是一致的。
  2. 数据类型不匹配:外键和主键的数据类型必须一致,包括数据长度和精度。如果数据类型不匹配,可能会导致外键与主键中的相同数据不匹配。你可以检查外键和主键的数据类型,确保它们一致。
  3. 索引问题:外键和主键之间的关系通常需要创建索引来提高查询性能。如果外键或主键没有正确创建索引,可能会导致数据不匹配。你可以检查外键和主键的索引是否正确创建。

解决这个问题的方法包括:

  1. 检查数据一致性:确保父表和子表中的数据是一致的,可以通过查询和比对数据来进行验证。
  2. 检查数据类型:确保外键和主键的数据类型一致,包括数据长度和精度。
  3. 检查索引:确保外键和主键之间的关系正确创建索引,以提高查询性能。

如果以上方法都没有解决问题,可能需要进一步检查数据库设计和表结构,以确保外键和主键的定义正确。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

被解放02 庄园疑云

为了找到心爱的人,决定一探这神秘糖果庄园。 连接数据库 Django为多种数据库后台提供了统一调用API。根据需求不同,Django可以选择不同数据库后台。MySQL算是最常用数据库。...上面包含数据库名称和用户信息,它们MySQL对应数据库和用户设置相同。Django根据这一设置,MySQL相应数据库和用户连接起来。此后,Django就可以在数据读写了。...这富丽堂皇别墅隐隐闻到凶险味道。 显示数据 数据模型虽然建立了,但还没有数据输入。为了简便,我们手动添加记录。打开MySQL命令行,并切换到相应数据库。...在浏览器输入URL: 127.0.0.1:8000/west/staff 查看效果: 从数据库读出数据,显示在页面 “心爱的人,原来你在这里。” 强自镇定,嘴角忍不住颤动。...总结 Django使用类和对象接口,来操纵底层数据库。 有了数据库,就有了站点内容大本营。 ,风雨欲来。

1.6K50

【MySQL】04_约束

,然后才可以删除主表数据 在“从表”中指定约束,并且一个表可以建立多个约束 从表主表被参照列名字可以不相同,但是数据类型必须一样,逻辑意义一致。...约束等级 Cascade方式 :在表上update/delete记录时,同步update/delete掉子表匹配记录 Set null方式 :在表上update/delete记录时,将子表上匹配记录列设为...null,但是要注意子表列不能为not null No action方式 :如果子表中有匹配记录,则不允许对表对应候选进行update/delete操作 Restrict方式 :同no action...那么建和约束不影响查询语句执行 阿里开发规范 【 强制 】不得使用级联,一切概念必须在应用层解决。...级联更新适用于 单 机低并发 ,不适合 分布式 、 高并发集群 ;级联更新是强阻塞,存在数据库 更新风暴 风险;影响 数据 插入速度 。

2.4K20

《深入浅出SQL》问答录

如果只有一张白表,为什么还要创建数据库? A:SQL语言要求所有的表都放在数据,这当然有它理由。...有办法确定已经连接到了吗? A:为NULL,表示在没有相符主键。但我们可以确认包含有意义、已经存储在值,请通过约束实现。...A:约束能确保引用完整性(换句话说,如果表某行有,约束能确保该行通过另一张表某一行一一对应)。...如果我们试着删除主键行或者是改变主键值,而这个主键是其他表约束时,你就会收到错误警告。 所以上面说那种,就不能删除了是吗? A:还是可以,先移除外行即可。...插入值必须已经存在来源,这是引用完整性。 创建作为表约束提供了明确优势,如果违反了规则,约束会阻止我们破坏表。 不一定要是主键,但是要具有唯一性。 ?

2.9K50

MySQL 约束介绍

MODIFY 字段名 数据类型; 5、约束 限定某个表某个字段引用完整性 从表列,必须引用/参考主表主键或唯一约束列 在创建约束时,如果不给约束命名,默认名不是列名,而是自动产生一个键名...创建(CREATE)表时就指定约束的话,先创建主表,再创建从表 删表时,先删从表(或先删除外约束),再删除主表 从表主表被参照列名字可以不相同,但是数据类型必须一样,逻辑意义一致 在“...#(从表某个字段)字段名可以主表名(被参考字段)字段名一样,也可以不一样 -- FOREIGN KEY: 在表级指定子表列 -- REFERENCES: 标示在列 约束等级 Cascade...方式:在表上update/delete记录时,同步update/delete掉子表匹配记录 Set null方式:在表上update/delete记录时,将子表上匹配记录列设为null,但是要注意子表列不能为...not null No action方式:如果子表中有匹配记录,则不允许对表对应候选进行update/delete操作 Restrict方式:同no action, 都是立即检查约束(如果没有指定等级

1.6K41

MYSQL约束及修改数据

MYSQL约束及修改数据表 28:约束 约束保证数据完整性和一致性 约束分为表级约束和列级约束 约束类型包括:     NOT NULL(非空约束)     PRIMARY KEY(主键约束)     ...30:删除表数据 DELETE FROM 数据表名 WHERE 条件; 31:约束参照操作(约束要求解析) 约束保证数据一致性,完整性,实现一对多或者一对一关系 (含有表称为子表...) 约束要求 1:表和子表必须使用相同存储引擎,而且禁止使用临时表 2:数据存储引擎只能为InnoDB 3:列和参照列必须具有相似的数据类型,其中数字长度或是否有符号位必须相同,而字符长度则可以不同...33:约束参照操作 CASCADE:从父表删除或者更新且自动删除或者更新子表匹配行 《在两表插入记录,必须先在插入记录》 SET NULL:从父表删除或者更新行,并且设置子表列为...NULL,如果使用该选项,必须保证子表列没有指定NOT NULL RESTRICT:拒绝对删除或者更新操作 NO ACTION:标准sql关键字,在my sqlRESTRICT相同 ?

3.2K80

SQL重要知识点梳理!

MySQL数据库-基础知识 1.说说主键、超、候选差别并举例 超(super key): 在关系能唯一标识元组属性集称为关系模式。...(foreign key):如果关系模式R属性K是其它模式主键,那么k在模式R称为。...主键:就是用户从很多候选选出来一个就是主键,比如你要求学号是主键,那么身份证号就不可以是主键了! :宿舍号就是学生信息表。 2.为什么一般用自增列作为主键?...触发器能够拒绝或回退那些破坏相关完整性变化,取消试图进行数据更新事务。当插入一个与其主键匹配外部时,这种触发器会起作用。 4.什么是存储过程?优缺点是什么?函数区别是什么?...左连接: 包含左边表全部行(不管右边是否存在与它们匹配行),以及右边表全部匹配行。 右连接: 包含右边表全部行(不管左边是否存在与它们匹配行),以及左边表全部匹配行。

80220

数据库MySQL详解

(约束子表数据操作) 对表约束: 数据进行写操作(删和改: 都必须涉及到主键本身), 如果对应主键在子表已经被数据所引用, 那么就不允许操作 4.4.4 条件 1.要存在: 首先必须保证表存储引擎是...innodb(默认存储引擎): 如果不是innodb存储引擎,那么可以创建成功,但是没有约束效果. 2.字段字段类型(列类型)必须主键类型完全一致. 3.一张表键名字不能重复.... 4,增加字段(数据已经存在),必须保证数据主键要求对应. 4.4.5 约束 所谓约束: 就是指作用....约束是唯一推荐约束 提示:主键约束其实就是非空约束和唯一约束合二为一情况 约束有三种约束模式: 都是针对约束(子表约束表) District: 严格模式(默认), 表不能删除或者更新一个已经被子表数据引用记录...,去右表所有的记录进行匹配匹配必须是某个条件在左表右表相同最终才会保留结果,否则不保留.

2.3K10

约束

约束 foreign key 约束要求: 表和字表必须使用相同存储引擎,禁止使用临时表; 数据库引擎只能是InnoDB; 列和参照列必须具有相似的数据类型,数字长度或者是否有符号必须一样...,字符长度可以不一样; 列和参照列必须创建索引,参照列没有索引,mysql回自动创建索引; ----------- 下面创建两个数据表 1(表)省份表两个字段 id (主键) 省份名称 2(子表...)用户表三个字段 id (主键) 用户名称 省份编号(对应省表主键id类型一样,因为需要把这个设置为约束) ------------------- 字表通过省份编号去在查询省份名称; -...,相当于省份表 id,那么用户表省份编号省份表id字段类型必须一样; ------------- 添加语法 ALTER TABLE tbl_name ADD [CONSTRAINT...); ---------- 约束参照操作:也据说说字表建立了关联或者约束,这个时候表进行操作时候,子表也可以设置相应操作; cascade;从父表删除时候,字表相应字段删除 Set

2K90

【建议收藏】MySQL 三万字精华总结 —索引(二)

大家好,又见面了,是全栈君。 四、索引 ❝ 说说你对 MySQL 索引理解? 数据库索引原理,为什么要用 B+树,为什么不用二叉树? 聚集索引非聚集索引区别?...InnoDB主键索引辅助索引结构 InnoDB引擎索引结构叶子节点数据域,存放就是实际数据记录(对于主索引,此处会存放表中所有的数据记录;对于辅助索引此处会引用主键,检索时候通过主键主键索引中找到对应数据行...保证数据一致性和节省存储空间,可以这么理解:商城系统订单表会存储一个用户ID作为关联,而推荐存储完整用户信息,因为当我们用户表信息(真实名称、手机号、收货地址···)修改后,不需要再次维护订单表用户数据...;如果发生Hash碰撞(两个不同关键字Hash值相同),则在对应Hash下以链表形式存储。...哪些情况需要创建索引 主键自动建立唯一索引 频繁作为查询条件字段 查询与其他表关联字段,关系建立索引 单键/组合索引选择问题,高并发下倾向创建组合索引 查询中排序字段

55030

MySQL数据表存储引擎类型及特性

MYI(MYIndex存储索引); 没有事务支持,不支持行锁,因此当insert、update会锁定整个表,效率会低一些,MyIASM存储了行数,如果表读操作远大于写且不需要事务,MyISAM优选...Innodb 提供了对数据库ACID事务支持并实现SQL标准四种隔离级别,提供行级锁和约束。...所以主键建议过长否则辅助索引会变得很大。 Innodb必须有主键如果没有显示指定Mysql会自动选择一个唯一标识数据记录为主键。 聚集索引按主键搜索效率十分高效,辅助索引必须检索两遍。...基于Innodb索引结构可以解释为什么建议使用过长主键为什么建议使用非单调(非递增)记录做主键,B+Tree索引结构导致使用非单调做主键会相当低效。...定义相同除以下 非叶子节点子树指针关键字个数相同 非叶子节点子树指针P[i]指向关键字值属于(K[i], K[i+1])子树 为所有叶子节点增加一个链指针 所有关键字都在叶子节点出现 ?

1.7K60

约束

一:类型 约束类型一共分三种 域约束:      涉及一个或多个列,(限制某一列数据大于0) 实体约束:     相同值不能存在于其他 引用完整性约束:  一个表一个列某个表另一个列匹配...约束用在确保数据完整性和两个表之间关系上 先看例子 create table orders ( id     int     identity  not null   primary key,... key  references  customer(id), orderdate    smalldatetime   not null, eid   int  not null ) 注意:这个表必须是另一个表主键...       同时删除该记录 也就是当删除orders表一条记录, 之相关orderdetails表记录也将被删除 级联深度是没有限制,但是每个都必须设置on      delete...   cacade  no action是可选 五:unique约束 unique约束主键约束类似,同样也是要求指定列有唯一值 但是一个表可以有多个unique约束列,同时这个列允许存在null

80810

MySQL(五)之DDL(数据定义语言)六大约束

前言 前面在数据讲解,其实很多东西都非常细节,在以前学习过程都是没有注意到。可能在以后工作中会碰到所以都是做了记录。...接下来,将分享是MySQLDDL用来对数据库及表进行操作。   mysql中保存了很多数据库、一个数据可以保存很多表。   ...用于另一张表关联。是能确定另一张表记录字段,用于保持数据一致性。比如,A表一个字段,是B表主键,那他就可以是A表。     ...2)特点       2.1)、约束可以描述任意一个字段(包括主键),可以为空,并且一个表可以有多个。但是字段值必须是另一张表主键。       ...2.3)、子表被约束修饰字段必须和主键字段类型一样。     注意:一个表中有被修饰字段,就称该表有(是“有”。

1.9K90

第13章_约束

# 6.4 特点 (1)从表列,必须引用 / 参考主表主键或唯一约束列 ​ 为什么?...,需要先删除从表依赖该记录数据,然后才可以删除主表数据 (6)在 “从表” 中指定约束,并且一个表可以建立多个约束 (7)从表主表被参照列名字可以不相同,但是数据类型必须一样,.../delete 掉子表匹配记录 Set null方式 :在表上 update/delete 记录时,将子表上匹配记录列设为 null,但是要注意子表列不能为 not null No...例如:在员工表,可以添加一个员工信息,它部门指定为一个完全不存在部门。 问题 3:那么建和约束和查询有没有关系? 答:没有 在 MySQL 里,约束是有成本,需要消耗系统资源。...# 6.10 阿里开发规范 【 强制 】不得使用级联,一切概念必须在应用层解决。 说明:(概念解释)学生表 student_id 是主键,那么成绩表 student_id 则为

35730

数据库面试题汇总

对一个包含InnoDB表转为MYISAM会失败; 3、InnoDB是聚集索引,数据文件是和索引绑在一起,必须要有主键,通过主键索引效率很高。...更新都存在一定影响(考虑实际情况来创建); 25.主键、超、候选:在关系能唯一标识元组属性集称为关系模式。...主键数据库表对储存数据对象予以唯一和完整标识数据列或属性组合。一个数据列只能有一个主键,且主键取值不能缺失,即不能为空值(Null)。 :在一个表存在另一个表主键称此表。...内连接: 只连接匹配行 左连接: 包含左边表全部行(不管右边是否存在与它们匹配行),以及右边表全部匹配行 右连接: 包含右边表全部行(不管左边是否存在与它们匹配行),以及左边表全部匹配行...,常见于使用非唯一索引即唯一索引非唯一前缀进行查找; eq_ref:唯一性索引扫描,对于每个索引,表只有一条记录匹配,常用于主键或者唯一索引扫描; const,system:当MySQL对某查询某部分进行优化

52520

MySQL数据表存储引擎类型及特性 转

MYI(MYIndex存储索引); 没有事务支持,不支持行锁,因此当insert、update会锁定整个表,效率会低一些,MyIASM存储了行数,如果表读操作远大于写且不需要事务,MyISAM优选...Innodb 提供了对数据库ACID事务支持并实现SQL标准四种隔离级别,提供行级锁和约束。...所以主键建议过长否则辅助索引会变得很大。 3.Innodb必须有主键如果没有显示指定Mysql会自动选择一个唯一标识数据记录为主键。 4.聚集索引按主键搜索效率十分高效,辅助索引必须检索两遍。...5.基于Innodb索引结构可以解释为什么建议使用过长主键为什么建议使用非单调(非递增)记录做主键,B+Tree索引结构导致使用非单调做主键会相当低效。...定义相同除以下 2.非叶子节点子树指针关键字个数相同 3.非叶子节点子树指针P[i]指向关键字值属于(K[i], K[i+1])子树 4.为所有叶子节点增加一个链指针 5.所有关键字都在叶子节点出现

1.5K20

MySql---复习

是表一个字段,不是本表主键,但对应另一个表主键。定义后,不允许删除另一个表具有关联关系行。 主要作用是保持数据一致性、完整性。...如果是后一种情况,则子表是同一个表,这样表称为自参照表,这种结构称为自参照完整性。 必须为表定义主键主键不能包含空值,但允许在外中出现空值。...也就是说,只要每个非空值出现在指定主键,这个内容就是正确数目必须和主键数目相同,因为有组合主键和组合。...数据类型必须和主键对应列数据类型相同。...REFERENCES 主键列1 [,主键列2,…] 其中:键名为定义约束名称,一个表不能有相同名称;字段名表示子表被健约束字段名;主表名即被子表所依赖名称;主键列表示主表定义主键列或者列组合

5.2K30

【建议收藏】MySQL 三万字精华总结 —索引(二)

四、索引 ❝说说你对 MySQL 索引理解? 数据库索引原理,为什么要用 B+树,为什么不用二叉树? 聚集索引非聚集索引区别? InnoDB引擎索引策略,了解过吗?...❝为什么主键索引结构叶子节点存储主键值?...保证数据一致性和节省存储空间,可以这么理解:商城系统订单表会存储一个用户ID作为关联,而推荐存储完整用户信息,因为当我们用户表信息(真实名称、手机号、收货地址···)修改后,不需要再次维护订单表用户数据...;如果发生Hash碰撞(两个不同关键字Hash值相同),则在对应Hash下以链表形式存储。...哪些情况需要创建索引 主键自动建立唯一索引 频繁作为查询条件字段 查询与其他表关联字段,关系建立索引 单键/组合索引选择问题,高并发下倾向创建组合索引 查询中排序字段,排序字段通过索引访问大幅提高排序速度

57220

两万字数据库面试题,不看绝对后悔

一、基本概念 ---- 1.主键、超、候选:在关系能唯一标识元组属性集称为关系模式。一个属性可以为作为一个超,多个属性组合在一起也可以作为一个超。超包含候选主键。...候选:是最小超,即没有冗余元素主键数据库表对储存数据对象予以唯一和完整标识数据列或属性组合。一个数据列只能有一个主键,且主键取值不能缺失,即不能为空值(Null)。...:在一个表存在另一个表主键称此表。...2.为什么用自增列作为主键 如果我们定义了主键(PRIMARY KEY),那么InnoDB会选择主键作为聚集索引、 如果没有显式定义主键,则InnoDB会选择第一个包含有NULL值唯一索引作为主键索引...内连接: 只连接匹配行 左连接: 包含左边表全部行(不管右边是否存在与它们匹配行),以及右边表全部匹配行 右连接: 包含右边表全部行(不管左边是否存在与它们匹配行),以及左边表全部匹配

1.2K42

MySQL数据库操作教程

:FOREIGN KEY --约束要求: --1.表和子表必须使用相同存储引擎,而且禁止使用临时表 --2.数据存储引擎只能为InnoDB /* 3.列和参照列必须具有相似的数据类型。...约束参照操作及功能: 1.CASCADE:从父表删除或更新且自动删除或更新子表匹配行 2.SET NULL:从父表删除或更新行,并设置子表列为NULL (ps.如果使用该选项,...必须保证子表列没有指定NOT NULL) 3.RESTRICT:拒绝对删除或更新操作 4.NO ACTION:标准SQL关键字,在MySQLRESTRICT相同 --例子 CREATE...:FOREIGN KEY --约束要求: --1.表和子表必须使用相同存储引擎,而且禁止使用临时表 --2.数据存储引擎只能为InnoDB /* 3.列和参照列必须具有相似的数据类型。...约束参照操作及功能: 1.CASCADE:从父表删除或更新且自动删除或更新子表匹配行 2.SET NULL:从父表删除或更新行,并设置子表列为NULL (ps.如果使用该选项,

4.8K10

【说站】mysql有哪些约束等级

mysql有哪些约束等级 1、Cascade方式。 当update/delete记录在主表上时,同步update/delete掉从表匹配记录。 2、Set null方式。...当update/delete记录在主表上时,从表上匹配记录列被设置为null,但需要注意是,子表列不能是notnull。 3、No action方式。...如果子表中有匹配记录,则不允许update/delete操作表相对应候选。 4、Restrict方法,no action相同。 立即检查约束。...5、Set default模式,空白可能显示在可视化工具SQLyog。 当表发生变化时,子表将列设置为默认值,但Innodb无法识别。...添加键指向部门表主键 alter table emp add foreign key(dept_id) references dept(id) 以上就是mysql约束等级介绍,希望对大家有所帮助

2.1K20
领券