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

MySQL数据库外键约束打开与关闭 ️

MySQL数据库外键约束打开与关闭 ️ 摘要 作为一名技术博主,我们时常需要处理数据库的外键约束。...正文内容(详细介绍) 关闭外键约束检查 在执行需要暂时取消关联的操作时,可以使用以下 SQL 命令关闭外键约束检查: SET foreign_key_checks = 0; 外键约束检查关闭的作用 关闭外键约束检查后...这意味着你可以在不受外键约束限制的情况下,执行一些需要暂时取消关联的操作,如数据导入、删除操作等。 风险与最佳实践建议 需要注意的是,关闭外键约束检查可能会导致数据不一致或丢失引用完整性的风险。...关闭外键约束检查可能会导致数据不一致或丢失引用完整性的风险,例如插入不符合外键约束的数据。 问题2:什么情况下需要关闭外键约束检查?...MySQL 数据库的外键约束检查,以及关闭外键约束检查可能带来的风险和最佳实践建议。

16310

MySQL实战七:你不知道的外键与约束使用!

1.标准的SQL语句 DML(Data Manipulation Language,数据操作语言) 语句:主要由select、insert、update和 delete 四个关键字完成。...事务控制语句:主要由commit、rollback和savepoint 三个关键字完成。 2.DDL 2.1 check约束无效,如何解决?...2.2 外键 2.2.1 创建外键 (1)不带别名的外键,数据库自动生成 首先创建department表: CREATE TABLE department ( dept_name varchar...学习 cascade 表示级联操作,就是说,如果主键表中被参考字段更新,外键表(子表)中也更新,主键表(父表)中的记录被删除,外键表(子表)中改行也相应删除。...而on update只能删除子表外键数据,不能删除父表主键数据,只能更新父表的主键,同时父子表数据都会被更新,但是在子表的外键上做更新操作无效。

4.3K20
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    MySQL 中的 REPLACE INTO语法

    如果目标表中已存在与新插入行的主键(PRIMARY KEY)或唯一键(UNIQUE KEY)冲突的记录,则会删除旧记录并插入新记录。...FROM another_table; REPLACE INTO 的工作机制 检查是否有冲突: MySQL 会检查插入行的主键或唯一键约束是否冲突。 如果没有冲突: 行被直接插入。...与 INSERT 的比较 特性 INSERT REPLACE INTO 存在冲突时的行为 返回错误或忽略插入 删除冲突的记录,并插入新的记录 使用场景 数据插入 插入数据并自动覆盖冲突记录 是否触发删除触发器...否 是(当删除旧记录时会触发 DELETE 触发器) 主键/唯一键约束 插入失败或更新(INSERT ON DUPLICATE KEY UPDATE) 删除冲突记录后插入新记录 注意事项 性能问题...外键约束: 如果表定义了外键约束,删除旧记录可能导致外键相关的约束失败。 数据丢失: REPLACE INTO 会直接删除冲突的行,如果删除的行中包含重要数据,可能导致数据丢失。

    10010

    SQL基础--> 约束(CONSTRAINT)

    a.主键约束提示 --下面使用currval值,提示主键冲突,从PK_TB_CONS2_EMPNO即可得知是主键列冲突,这就是自定义约束名的好处 SQL> INSERT INTO tb_constraint...--外键约束对delete语句的影响: SQL> DELETE FROM tb_constraint_2; 2 rows deleted....insert语句的影响: 插入数据的外键字段值必须在主表中存在,只有从表才有可能违反约束,主表不会。...外键约束对delete语句的影响: 删除主表数据时,如果从表有对该数据的引用,要先将从表中的数据处理好。主表才有可能违反约束。...外键约束对update语句的影响: 主从表都有可能违反外键约束,操作一个表必须将另一个表的数据处理好。 外键约束对DDL语句的影响: 删除主表时,才有可能违约约束。

    1.7K20

    MySQL:表的约束

    唯一键 创建带有唯一键的表: 唯一键表达了类似于主键的功能,不能发生冲突。 但是,唯一键是可以为空的,这是区别于主键的地方。 主键与唯一键并不冲突,是互相补充的!!!...如果我插入的元素电话列,发生了冲突,但是主键又只能有一个,所以这里就需要唯一键来约束,保证电话的唯一性。...外键 外键用于定义主表和从表之间的关系:外键约束主要定义在从表上,主表则必须是有主键约束或unique约束。当定义外键后,要求外键列数据必须在主表的主键列存在或为null。...语法: foreign key (字段名) references 主表(列) 案例: 这样的student只是有外键之名(关联关系),但是没有外键之实(没有约束)。重新创建一个。...外键需要注意: (1)从表和主表的关联关系 (2)产生外键约束 总结: 好了,到这里今天的知识就讲完了,大家有错误一点要在评论指出,我怕我一人搁这瞎bb,没人告诉我错误就寄了。

    6710

    BI-SQL丨Constraints

    [1240] Constraints Constraints,约束的意思。通常用来约束加入表中的数据,如果与约束冲突,则行为会被终止。...Constraints数据仓库中经常使用的有以下几种约束: NOT NULL(不为空) UNIQUE(唯一) PRIMARY KEY(主键) FOREIGN KEY(外键) CHECK(检查) DEFAULT...//多个列定义约束 ...... ) C.FOREIGN KEY 一个表中的外键,通常可以用来连接另外一张表中的主键。...那么Product表中的ProductID就是主键,Fact表中的ProductID就是外键。 同时,外键的存在,可以防止意外删除。这对于数据仓库来说,很重要。...FOREIGN KEY (外键) REFERENCES 表名称(主键)//多个列定义约束 ...... ) D.CHECK CHECK通常可以用来约束限制列值的范围。

    76220

    【Mysql】:linux环境下表的三部曲(数据操作 + 类型解析 + 约束规则)

    ,这样,当业务调整的时候,我们可以尽量不会对主键做过大的调整 3.8 外键(foreign Key) 外键: 从表和主表的关联关系 产生外键约束 为什么需要外键约束?...外键 用于 确保表间数据的一致性,例如:防止插入一个不存在班级的学生或删除一个还有学生的班级。 定义:外键约束用于建立主表和从表之间的关联关系,主要定义在从表上,主表必须包含主键或唯一键。...外键 用于定义 主表 和 从表 之间的关系: 外键约束主要定义在从表上 主表则必须是有主键约束或 unique 约束 当定义外键后,要求外键列数据必须在主表的主键列存在或为 NULL 在从表中,设置外键约束...,这样,当业务调整的时候,我们可以尽量不会对主键做过大的调整 3.8 外键(foreign Key) 外键: 从表和主表的关联关系 产生外键约束 为什么需要外键约束?...外键 用于定义 主表 和 从表 之间的关系: 外键约束主要定义在从表上 主表则必须是有主键约束或 unique 约束 当定义外键后,要求外键列数据必须在主表的主键列存在或为 NULL 在从表中,设置外键约束

    3300

    【Java】已解决com.mysql.jdbc.exceptions.jdbc4.MySQLIntegrityConstraintViolationException异常

    这个异常通常表明在执行数据库操作时违反了数据完整性约束,例如主键冲突、外键约束不满足、唯一约束冲突等。这类问题往往出现在插入、更新或删除数据库记录的场景中。...二、可能出错的原因 主键冲突:尝试插入一个已经存在主键值的记录。 外键约束不满足:尝试插入或更新一个记录,但其外键值在相关表中不存在。...唯一约束冲突:尝试插入一个违反唯一约束的记录,如某列被定义为UNIQUE,但新插入的值已经存在。 其他完整性约束:数据库中的其他完整性规则被违反,例如CHECK约束等。...由于我们省略了主键字段(假设它是自增的),因此不会发生主键冲突。 五、注意事项 数据校验:在插入或更新数据库记录之前,始终进行必要的数据校验,以确保不违反任何完整性约束。...数据类型匹配:确保Java代码中的数据类型与数据库中的数据类型相匹配,以避免因数据类型不匹配导致的错误。

    39110

    mysql学习总结04 — SQL数据操作

    外键字段与主表主键字段类型完全一致 外键字段与主表主键字段基本属性相同 如果是在表后增加外键,对数据有要求(从表数据与主表的关联关系) 外键只能使用innodb存储引擎,myisam不支持 12.4...外键约束概念 外键约束主要约束主表操作,从表仅约束不能插入主表不存在的数据,外键约束约束了例如: 从表插入数据,不能插入对应主表主键不存在的数据 主表删除数据,不能删除被从表引入的数据 外键约束保证了数据的完整性...(主表与从表数据一致),外键强大的数据约束作用可能导致数据在后台变化的不可控,所以外键在实际开发中较少使用 12.5 外键约束模式 三种约束模式: district:严格模式,默认的,不允许操作 cascade...:级联模式,一起操作,主表变化,从表数据跟随变化 set null:置空模式,主表变化(删除),从表对应记录设置为空,前提是从表中对应的外键字段允许为空 添加外键约束模式: 基本语法: add foreign...key(外键字段>) references () on 约束模式>; 通常在进行约束时候的时候,需要指定操作:update和delete 常用的约束模式:on update cascade

    5.2K30

    六年开发经验,整理Mysql数据库技巧笔记,全网最详细的笔记集合!

    ; 外键约束 建表时添加外键约束 CREATE TABLE 表名( 列名 数据类型 约束, ......CONSTRAINT 外键名 FOREIGN KEY (本表外键列名) REFERENCES 主表名(主表主键列名) ); 删除外键约束 ALTER TABLE 表名 DROP FOREIGN...KEY 外键名; 建表后单独添加外键约束 ALTER TABLE 表名 ADD CONSTRAINT 外键名 FOREIGN KEY (本表外键列名) REFERENCES 主表名(主键列名); 外键的级联更新和级联删除...SQL 语句列表; RETURN 结果; END$ 调用存储函数 SELECT 函数名称(实际参数); 删除存储函数 DROP FUNCTION 函数名称; 触发器 触发器是与表有关的数据库对象,可以在...insert、update、delete 之前或之后触发并执行触发器中定义的 SQL 语句。

    1.4K20

    day05_MySQL学习笔记_02

    ) FOREIGN KEY(foreign key:外键) REFERENCES(references:引用/参照/关联)       第二种添加外键约束的方式:在表格创建时没有添加外键约束,之后通过修改表格添加外键约束...设计从表可以有两种方案:         方式1:在t_card表中添加外键列(相对t_user表),并且给外键添加唯一约束;即:字段 字段类型 unique,         方式2:给t_card表的主键添加外键约束...:在创建表格的时候同时添加外键约束。...) FOREIGN KEY(foreign key:外键) REFERENCES(references:引用/参照/关联)       第二种添加外键约束的方式:在表格创建时没有添加外键约束,之后通过修改表格添加外键约束...注意:在执行脚本时需要先行核查当前数据库中的表是否与脚本文件中的语句有冲突!   例如在脚本文件中存在create table a的语句,而当前数据库中已经存在了a表,那么就会出错!

    2.1K20

    面试官:MySQL 唯一索引为什么会导致死锁?

    (4) 建立主键的目的是让外键来引用. (5) 一个表最多只有一个主键,但可以有很多唯一键 存在唯一键冲突时,避免策略 insert ignore insert ignore会忽略数据库中已经存在的数据...此时会发现吕布的班级跟年龄都改变了,但是id也变成最新的了,所以不是更新,是删除再新增 insert on duplicate key update 如果在insert into 语句末尾指定了on duplicate...如果有两个事务并发的执行同样的语句,那么就会产生death lock,如 img 解决办法: 1、尽量对存在多个唯一键的table使用该语句 2、在有可能有并发事务执行的insert 的内容一样情况下不使用该语句...id的改变;insert … on duplicate key update在遇到重复行时,会直接更新原有的行,具体更新哪些字段怎么更新,取决于update后的语句。...参考 Mysql中unique与primary约束的区别分析(转) MySQL避免插入重复记录:唯一性约束 MySQL优化–INSERT ON DUPLICATE UPDATE死锁 ---- 我是蜗牛

    1.7K20

    大型互联网公司使用的数据库设计规范

    约束设计标准 1、 主键的内容不能被修改。 2、外键约束一般不在数据库上创建,只表达一个逻辑的概念,由程序控制。...3、 禁用数据库外键 4、命名 a) 主键约束:默认PRIMARY; b) unique约束:UK_ c) check约束:CK_ d) 外键约束...2、SELECT语句只获取需要的字段,禁止使用SELECT * FROM语句,这是有效防止新增字段对应用逻辑的影响,还能减少对性能的影响; 3、INSERT语句必须显式的指明字段名称,不使用INSERT...8、避免在SQL语句进行数学运算或者函数运算,容易将业务逻辑和DB耦合在一起。 9、INSERT语句使用batch提交。...但请避免每执行一个SQL去检查一次DB可用性; 使用replace带来的问题 1、Replace into 操作在唯一键重复情况下,是先尝试写入,检测到冲突则删除原记录,再写入新记录。

    1.9K30

    hhdb数据库介绍(9-15)

    INSERT IGNORE在计算节点上,当出现主键/唯一键冲突时,将忽略数据与冲突信息。...Query OK, 0 rows affected (0.00 sec)对分片表INSERT IGORE语句的操作,若INSERT语句中,没有给出分片字段与分片字段值,计算节点将根据是否开启全局唯一约束判断是否忽略...即在存储节点中,若父表与子表的外键值相等,则可匹配后插入数据,当非分片字段作为外键关联字段时,由于子表外键关联字段路由的节点与父表分片字段的路由节点不一致,导致子表最终路由的存储节点中找不到父表所对应的外键值...即在存储节点中,若父表与子表的外键值相等,则可匹配后插入数据,但当非关联字段作为外键关联字段时,由于子表外键关联字段路由的节点与父表分片字段的路由节点不一致,导致子表最终路由的存储节点中找不到父表所对应的外键值...即在存储节点中,若父表与子表的外键值相等,则可匹配后插入数据,但当非关联字段作为外键关联字段时,由于子表外键关联字段路由的节点与父表分片字段的路由节点不一致,导致子表最终路由的存储节点中找不到父表所对应的外键值

    5210

    MySQL数据库表约束详解

    : 如何理解外键约束?...所以我们需要在从表上建立外键约束将主表的班级的和从表的班级进行一个外键的约束,这样保证我们每次插入和删除数据都是正确的!...两张表在业务上是有相关性的,但是在业务上没有建立约束关系,那么就可能出现问题。 解决方案就是通过外键完成的。...建立外键的本质其实就是把相关性交给mysql去审核了,提前告诉mysql表之间的约束关系,那么当用户插入不符合业务逻辑的数据的时候,mysql不允许你插入 语法: foreign key (字段名)...references 主表(列) 外键的作用: 建立从表和主表的关联关系 产生外键约束 对上面的示意图进行设计: 先创建主键表 create table myclass ( id int primary

    7300

    数据库技术:MySQL 多表,外键约束,数据库设计,索引,视图,存储过程触发器,数据控制,数据备份与恢复

    外键指的是在“从表”中与“主表”的主键对应的那个字段,比如员工表的 dept_id,就是外键。使用外键约束可以让两张表之间产生一个对应关系,从而保证主从表的引用的完整性。...主表:主键 id 所在的表,约束别人的表;从表:外键所在的表,被约束的表。...Create Foreign Key Constraint 添加外键约束,就会产生强制性的外键数据检查,从而保证了数据的完整性和一致性。...ALTER TABLE employee DROP FOREIGN KEY emp_dept_fk; -- 再将外键约束添加回来 # 省略外键约束名称, 系统会自动生成一个约束名称 ALTER TABLE...,否则外键约束创建失败。

    2.4K20

    YashanDB数据完整性

    数据库管理人员和业务程序开发人员明确声明数据完整性约束,以此来保证数据的完整性与业务正常运行。使用完整性约束有以下优点: 易用:可以使用SQL语句定义完整性约束,而无需任何额外的编程。...外键约束(Foreign key)指定一个列作为外键,在外键和主键或唯一键之间建立关系,也称为引用键。外键的值必须在主键或唯一键内存在。检查性约束(Check)要求对应列满足指定的条件。...通常,外键约束要求约束列或列集中的每个值都必须与另一个表的指定列中的值相匹配,例如教师所带的班级必须是班级信息表中存在(教师信息表到班级信息表的外键约束)。...术语定义外键/复合外键约束定义中包含的列称为外键,一个外键由多个列组成时称为复合外键。外键会引用另一个表的主键或唯一键,复合外键则需引用相同数量和数据类型列的复合主键或复合唯一键。...# 父表的修改与外键的关系删除或更新父表数据可能会破坏外键约束。

    5800

    insert ... on duplicate key update 和 replace into

    影响行数 = 0,表示插入记录和表中记录存在主键或唯一索引冲突,并且 insert duplicate 语句 update 字段列表中每个字段的字段值和冲突记录中对应的字段值一样。...影响行数 = 2,表示插入记录和表中记录存在主键或唯一索引冲突,但是 insert duplicate 语句 update 字段列表中的字段值和冲突记录中的字段值不一样,插入语句会更新表中冲突的第 1...执行过程分析 3.1 insert ... on duplicate key update insert duplicate 语句是 MySQL 对 SQL 标准的扩展,它有 2 种行为: 如果插入记录和表中记录不存在主键或唯一索引冲突...使用更新旧记录方式,需要同时满足 3 个条件: 条件 1,第 2 步中报记录冲突的那个索引是表中最后创建的唯一索引(也可能是主键)。 条件 2,表中的所有字段,都没有被其它表的字段作为外键约束。...外键约束和删除触发器都很少使用,不展开讲了。 4. 总结 2.

    1.8K40

    MySQL学习笔记汇总(四)——表的约束、存储引擎、事务

    (简称PK) 外键约束(foreign key):…(简称FK) 检查约束(check):注意Oracle数据库有check约束,但是mysql没有,目前mysql不支持该约束。...,在建表时给usercode和username这两个字段联合添加了唯一约束,表示这两个字段联合起来不能重复,usercode,username 与 insert into t_user values(1...username varchar(255) ); 外键约束:foreign key 外键主要是维护表之间的关系的,主要是为了保证参照完整性,如果表中的某个字段为外键 字段,那么该字段的值必须来源于参照的表的主键...外键可以为NULL 被外键引用的字段不一定是主键,但至少具有unique约束。...InnoDB 优点:支持事务、行级锁、外键等。这种存储引擎数据的安全得到保障。

    1.7K50

    【MySql】表的约束

    我们选择某一列作为主键,但是并不排除其他属性不需要维护,可能需要用到唯一键来限定,选择其他列作为唯一键,与主键配合起来,能够保证一些数据冲突。...外键foreign key 外键用于定义主表和从表之间的关系:外键约束主要定义在从表上,主表则必须是有主键约束或unique约束。...,上面的例子,我们不创建外键约束,就正常建立学生表,以及班级表,该有的字段我们都有。...因为此时两张表在业务上是有相关性的,但是在业务上没有建立约束关系,那么就可能出现问题。 解决方案就是通过外键完成的。...建立外键的本质其实就是把相关性交给mysql去审核了,提前告诉mysql表之间的约束关系,那么当用户插入不符合业务逻辑的数据的时候,mysql不允许你插入。

    21530
    领券