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

删除并重新创建FK约束和禁用并启用FK检查,哪个更好?

删除并重新创建FK约束和禁用并启用FK检查这两种方法都可以用来处理外键约束的问题,但在不同的情况下,它们有不同的适用性。

  1. 删除并重新创建FK约束:
    • 概念:删除并重新创建FK约束是指先删除原有的外键约束,然后再创建一个新的外键约束。
    • 优势:通过删除并重新创建FK约束,可以确保外键约束的完整性和一致性。同时,可以在重新创建外键约束时,对其进行调整和优化,以满足具体的需求。
    • 应用场景:适用于需要对外键约束进行修改、优化或重新设计的情况。
    • 推荐的腾讯云相关产品:腾讯云数据库 MySQL、腾讯云数据库 MariaDB、腾讯云数据库 PostgreSQL等。
    • 产品介绍链接地址:腾讯云数据库
  • 禁用并启用FK检查:
    • 概念:禁用并启用FK检查是指通过修改数据库的设置,暂时禁用外键约束的检查,然后再重新启用外键约束的检查。
    • 优势:通过禁用并启用FK检查,可以在某些情况下提高数据库的性能和操作效率。例如,在大批量数据导入或删除时,禁用外键约束可以减少检查的开销。
    • 应用场景:适用于需要对大批量数据进行操作,并且不需要严格的外键约束检查的情况。
    • 推荐的腾讯云相关产品:腾讯云数据库 MySQL、腾讯云数据库 MariaDB、腾讯云数据库 PostgreSQL等。
    • 产品介绍链接地址:腾讯云数据库

需要根据具体的情况和需求来选择使用哪种方法。如果需要对外键约束进行修改或重新设计,建议使用删除并重新创建FK约束的方法;如果需要在大批量数据操作时提高性能,可以考虑禁用并启用FK检查的方法。

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

相关·内容

SQL基础--> 约束(CONSTRAINT)

当对该表进行DML 操作时,如果操作违反约束条件或规则,ORACLE就会拒绝执行,给出提示。..., LEVEL, ROWNUM 伪列 –使用SYSDATE, UID, USER, USERENV 函数 –在查询中涉及到其它列的值 FOREIGN KEY 约束 外键约束是用来维护从表主表的引用完整性的...4 ON DELETE CASCADE; 6.禁用约束 默认情况下创建的约束启用的 --添加一个新列comm以及一个check约束并将其置为禁用模式 SQL> ALTER TABLE tb_cons2...ENABLE子句可将当前无效的约束启用 当定义或启用UNIQUE或PRIMARY KEY约束时系统会自动创建UNIQUE或PRIMARY KEY索引 --启用约束时不支持CASCADE,对被级联禁用约束应根据需要逐个启用...--为表添加主键约束启用延迟约束 SQL> ALTER TABLE tb_cust 2 ADD CONSTRAINT pk_tb_cust_custid PRIMARY KEY(custid)

1.7K20

存在外键关联的主表truncate如何做

: //          SELECT * FROM USER_CONSTRAINTS WHERE TABLE_NAME = "tabnam"; 比较清楚地说明了问题,以及解决方法:可以在执行前,先禁用外键约束...禁用外键约束删除后执行恢复操作 看到外键约束名称:FK_TBL_B_A: SQL> select constraint_name, constraint_type, status from user_constraints...R ENABLED 禁止外键约束: SQL> alter table tbl_b disable constraint FK_TBL_B_A; Table altered...恢复约束: SQL> alter table tbl_b enable constraint FK_TBL_B_A; Table altered....主外键关联中的主表,如果有数据,则不能直接用truncate方式删除,因为会认为有外键其关联,不能直接截断主表,若需要做,可以先禁止外键约束,主表变成一个独立的表,这样就可以执行truncate了。

84230
  • 【MySQL】外键约束删除更新总结

    外键约束删除/更新行为 行为 说明 NO ACTION 当在父表中删除/更新对应记录时,首先检查该记录是否有对应外键,如果有则不允许删除/更新。...(与RESTRICT一致) RESTRICT 当在父表中删除/更新对应记录时,首先检查该记录是否有对应外键,如果有则不允许删除/更新。...add constraint 外键名称 references 主表名(主表字段名) on update cascade on delete cascade -- 添加外键约束指定外键的删除更新行为...说明:如果子表与父表存在外键关联,删除父表的数据也会影响子表。 演示2: 现在我们先删除刚刚创建的empdept这两张表,然后重新创建。...-- 添加外键约束指定外键的删除更新行为 alter table emp add constraint fk_emp_dept_id foreign key (dept_id) references

    49110

    约束条件(constraint)「建议收藏」

    约束条件分类:非空(NOT NULL),唯一(UNIQUE),主键(PRIMARY KEY),外键(FOREIGN KEY),检查(CHECK)....如果INSERT INTO arwen VALUES(‘good’,NULL);无论重复多少次都不会出错 5.检查(CHECK): 建表时约束指定名字:CREATE TABLE arwen(ename...CREATE TABLE arwen(ename char(10),eno int PRIMARY KEY ,FOREIGN KEY(eno) REFERENCES(info(eno)) 8.禁用启用约束条件...此处CASCADE用处:如果写上它的话表示你禁用主键约束也会同时禁用对应的外键约束,但重启主键约束时不会自动去重启外键约束,需单独去启动外键约束....如果不写CASCADE.禁用主键约束时如果它有对应的外键约束则会出错.必须先删除禁用对应的外键约束后才能再禁用主键约束. 9.修改,删除约束条件名称 假如你开始没给约束命名,在禁用启动约束时又得去查数据字典

    1.6K30

    执行truncate抛出的ORA-02266

    究其原因,这truncate操作有关,因为truncate是DDL,但是DDL语句不会检查约束,换句话说,他不知道子表有没有数据依赖于他,索性不让做了。...针对ORA-02266的错误,有几种解决方案, 方案1,禁用约束-truncate-启用约束 可以参考MOS这篇文章《OERR: ORA-2266 "unique/primary keys in table...删除约束 SQL> alter table a_1 disable primary key cascade;Table altered. alter table a_1 disable primary...启用约束 只是需要注意,enable恢复主键的操作,并不会自动enable外键,需要手工enable外键, SQL> alter table tbl_a enable primary key;Table...方案2,delete删除 使用delete,DML操作是可以正常删除主表,只是不适合数据量很大的场景。

    1.1K30

    Oracle 20c新特性:TRANSFORM支持索引压缩

    此转换参数影响参考用户创建的索引的 pk 或 fk 约束的生成。如果设置为 Y,它将强制约束的名称与索引的名称匹配。 如果设置为 N(默认值),则约束将按源数据库中的名称创建。...此转换参数影响与 pk 或fk约束有关的索引的生成。如果设置为 Y,它将强制自动创建以强制约束的索引名称与约束名称相同。 如果设置为 N(默认值),那么将按照源数据库中的名称创建索引。...DWCS_CVT_CONSTRAINTS: [Y | N ] 此转换对以下对象类型有效:TABLE CONSTRAINT 对象类型。 如果设置为Y,它将指示数据泵创建禁用的pk,fk或uk约束。...如果设置为N(默认值),它将根据源数据库状态将数据泵定向到创建 pk,fk或uk约束。...在导入时重新创建这些对象时,数据泵会生成与导出时与那些对象的设置匹配的IM列存储子句。 如果在导入时指定了N,则数据泵将从具有一个的所有对象中删除IM列存储子句。

    99830

    【愚公系列】2022年01月 Mysql数据库-约束

    数据库中的约束,顾名思义即是对插入数据库中的数据进行限定,这么做的目的是为了保证数据的有效性完整性。...约束分为两类:行级表级,处理机制是一样的。行级约束放在列后,表级约束放在表后,多个列共用的约束放在表后。 完整性约束是一种规则,不占用任何数据库空间。...完整性约束存在数据字典中,在执行SQL或PL/SQL期间使用。用户可以指明约束启用的还是禁用的,当约束启用时,他增强了数据的完整性,否则,则反之,但约束始终存在于数据字典中。...20) NOT NULL; 6.外键约束 外键约束概念 让表表之间产生关系,从而保证数据的准确性!...ALTER TABLE orderlist DROP FOREIGN KEY ou_fk1; -- 添加外键约束,同时添加级联更新和级联删除 ALTER TABLE orderlist ADD CONSTRAINT

    55010

    增加删除字段修改字段名,修改表结构,非常用SQL语句技巧总结

    [PSTNUsageNotes] off 10.暂时关闭约束检查,等数据操作完成后再打开。...[FK_USAGE_REFERENCE_PSTN2]-- 在这里执行有可能破坏外键约束的操作,如强行删除数据等ALTER TABLE [Usage] CHECK CONSTRAINT [FK_USAGE_REFERENCE_PSTN1...,海量数据快速删除) TRUNCATE TABLE tableName 几个高级查询运算词 UNION 运算符   UNION 运算符通过组合其他两个结果表(例如 TABLE1 TABLE2)消去表中任何重复行而派生出一个结果表...INTERSECT 运算符   INTERSECT 运算符通过只包括 TABLE1 TABLE2 中都有的行消除所有重复行而派生出一个结果表。...--drop table 表名 --1>删除表本身,即表中数据表结构(列、约束、视图、键)全部删除

    2.2K30

    Oracle 数据库学习笔记 (二)

    3.4.1 删除学生的所有信息 3.4.2 删除老师的所有信息 3.5 修改12的约束为自定义的约束名称 3.6 修改级联删除 3.7 创建一个序列按2来自增,没有最大值,缓存的数量为30 一、表空间的基本操作...) 在数据库的设计中,约束是必不可少的支持,使用约束可以更好的保证数据库中数据的完整性,约束的作用是定义规则 举几个例子: 人的身份证有 18 位,这个不加约束的话,有的人乱填,就会出现很多问题 一个人的性别分为...xxx disable | enable constraint xxx; -- 暂时禁用 alter table xxx drop constraint xxx; -- 永久删除 2.3.4 检查约束...关键字:check 使用检查约束来判断一个列中插入的内容是否合法,例如:年龄的取值范围,性别的取值范围 注意: 可以使用 where(条件判断) 表达式后面就可以使用 check eg:性别 年龄的检查约束...3.4.1 删除学生的所有信息 drop table tb_student 3.4.2 删除老师的所有信息 drop table tb_teacher 3.5 修改12的约束为自定义的约束名称 --

    94721

    约束

    外键约束用在确保数据完整性两个表之间的关系上 先看例子 create table orders ( id     int     identity  not null   primary key,...创建约束之后,又想加入一些不符合规矩的数据。 这些时候就要禁用约束。...primary key    unique约束  这对孪生约束是不能禁用的 对一个已经存在数据的表加一个约束: alter  table  customers  add constraint cn_customerPhoneNo...salary >0; sp_bindrule  'SalaryRule' ,  'Employee.Salary' 第一句定义了一个规则叫SalaryRule 进行比较的事物是一个变量 这个变量的值是所检查的列的值...第二句把规则绑定到某个表的一个列上 规则ckeck约束很相似, 但是规则只作用在一个列上 一个规则可以绑定在多个列上,但是它不会意识到其他列的存在 check可以定义column1>=column2

    81810

    【数据库设计SQL基础语法】--表的创建与操作--表的修改删除操作

    第四个示例中,向 ‘products’ 表中添加 ‘price’ 列,数据类型为 DECIMAL(10,2),设置检查约束,确保价格不为负数。...在实际应用中,删除列的操作可能需要谨慎考虑,特别是在生产环境中。确保在执行删除列的操作之前,已经详细检查了相关的约束、索引依赖关系,以避免潜在的问题。...在实际应用中,删除表的操作可能需要谨慎考虑,特别是在生产环境中。确保在执行删除表的操作之前,已经详细检查了相关的约束、索引依赖关系,以避免潜在的问题。...在添加、修改或删除列时,确保相关的索引和约束仍然有效,或者在操作之后重新创建它们。 性能影响: 在大型表上执行修改操作可能会导致性能问题。...在重新创建表时,使用 CREATE TABLE 定义新的表结构,通过 INSERT INTO 将数据从旧表导入新表。

    37010

    MySQL从删库到跑路_高级(一)——数据完整性

    B、域完整性:限制类型(数据类型),格式(通过检查约束规则),可能值范围(通过外键约束检查约束,默认值定义,非空约束规则)。...外键声明包括三个部分: A、哪个列或列组合是外键 B、指定外键参照的表列 C、参照动作[cascade(级联操作),restrict(拒绝操作),set null(设为空),no action,set...TABLEscoreADD CONSTRAINTscore_fk2FOREIGN KEY (sid) REFERENCESstudent(sid); 5、验证级联动作删除更新 在score表创建的参照完整性...Restrict动作同no action,都是立即检查外键约束。...删除成绩表的外键约束 ALTER TABLEscoreDROP FOREIGN KEYscore_fk; 增加成绩表的sid列外键约束,参照动作为set null ALTER TABLEscoreADD

    1.9K20

    程序员硬核“年终大扫除”,清理了数据库 70GB 空间

    在实际找这些可删除的未使用的索引时,刚开始很耗时耗力,需要很多思考决策的。 在这过程中,我发现在检查完列表后,重置统计信息计数器是个好方法。...在每列上创建两个B树索引,一个启用 Deduplication,另一个禁用 Deduplication: db=# CREATE test_btree_dedup (n_unique serial, n_not_unique...Django生成的迁移将首先禁用FK约束(如果该字段是外键),则删除现有的完整索引创建新的部分索引。执行此迁移可能会导致停机性能下降,我们实际上不会运行它。 手动创建部分索引:使用Django的....删除完整索引:一旦使用了部分索引,就删除完整索引。这是检查部分索引完全索引大小的好方法,以便确定要释放多少存储空间。 伪造Django迁移:一旦数据库状态有效地与模型状态同步,我们就使用伪造迁移....当需要更好地控制迁移过程时,这种情况很有用。请注意,在没有停机时间考虑的其他环境,Django迁移将正常执行,全部索引将替换为部分索引。

    2.2K10

    Mysql基础7-约束

    ,则采用默认值 检查约束(check 8.0以后的新约束):保证字段满足某一个条件 外键约束(foreign key):用来让两张变的数据建立连接,保证数据的一致性完整性 二、约束的案例实践   需求...,不能删除或者修改父表中的数据,因为有外键存在   5、外键数据的更新和删除行为 no action:当在父表中删除/更新对应记录时,首先检查该记录是否有对应的外键,如果有则不允许删除/更新(与restrict...一致) restrict:当在父表中删除/更新对应记录时,首先检查该记录是否有对应的外键,如果有则不允许删除/更新(与 no action一致) cascade:当在父表中删除/更新对应记录时,首先检查该记录是否有对应的外键...default:父表有变更时,子表将外键列设置成一个默认的值(Innodb不支持)   6、重新创建《student》《teacher》表添加外键 mysql> select * from student...8、验证set null的更新和删除行为     需求1:同样先删除《student》《teacher》表然后重新建立新的表,重新建立外键约束测试 mysql> select * from teacher

    34540

    SQL数据库的基础知识及使用!

    常见约束类型有: a.数据类型约束(int或者char(2))等约束) b.非空约束(not null) c.默认约束(default) d.检查约束(check)等 引用完整性约束:保证数据库中的多张数据表数据的一致性完整性...外键约束的使用 外键约束的使用:当一张表依赖于另外一张表的某个或某些字段时使用,创建外键约束时,先建被引用的表(主键表),再建有外键约束的表(外键表) 删除表中的数据时,如果当前表(主键表)被其他表引用...创建数据库、数据表表的约束的示例代码 --指向当前要使用的数据库 use master go --判断当前数据库是否存在 if exists (select * from sysdatabases where...constraint pk_StudentId alter table Students add constraint pk_StudentId primary key (StudentId) --创建检查约束...uq_StudentIdNo alter table Students add constraint uq_StudentIdNo unique (StudentIdNo) --创建身份证的长度检查约束

    69130

    MySQL基础之常见约束标识列

    列级约束, 字段名 字段类型, 表级约束 ) CREATE DATABASE students; 一、创建表时添加约束 1.添加列级约束 语法: 直接在字段名类型后面追加 约束类型即可。...; ②表级约束 ALTER TABLE stuinfo ADD UNIQUE(seat); 5.添加外键 ALTER TABLE stuinfo ADD CONSTRAINT fk_stuinfo_major...FOREIGN KEY(majorid) REFERENCES major(id); 三、修改表时删除约束 1.删除非空约束 ALTER TABLE stuinfo MODIFY COLUMN stuname...VARCHAR(20) NULL; 2.删除默认约束 ALTER TABLE stuinfo MODIFY COLUMN age INT ; 3.删除主键 ALTER TABLE stuinfo DROP...fk_stuinfo_major; SHOW INDEX FROM stuinfo; 标识列 又称为自增长列 含义:可以不用手动的插入值,系统提供默认的序列值 特点: 1、标识列必须主键搭配吗

    63810
    领券