大家好,欢迎来到IT知识分享网。
本文的测试环境是:
- MySQL 5.5.16
- Microsoft SQL Server 2008 R2 (SP2)
- Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 – 64bit Production
当向数据库中插入数据的时候,如果有表之间的关系十分复杂,尤其是是存在各种外键关系,这是需要暂时关闭这种针对外键约束的检查,本文针对以下三种数据库进行了一个总结,如下:
一、MySQL
数据库
MySQL
中数据库中的外键约束是通过变量foreign_key_checks
作用的,这个变量管理的全局的外键约束,而没有针对每个表的外键约束进行单独管理。
1. 查看变量外键约束
-
show variables like '%foreign_key_checks%'
-
select @@foreign_key_checks
2. 开启外键约束:
set foreign_key_checks = 1
3.关闭外键约束:
set foreign_key_checks = 0
二、SQL Server
数据库
在SQL Server
数据库中针对外键约束进行了统一的管理,它的粒度已经到表的层次,而不像MySQL
中的那样只能对全局进行设置。SQL Server
中外键约束的管理是通过系统的存储过程来实现的,如下:
sp_helpconstraint [ @objname = ] 'table' [ , [ @nomsg = ] 'no_message' ]
@objname
:约束信息所在的表名,类型为nvarchar(776),没有默认值;@nomsg
:要打印表名信息,几乎不用;
1. 查看约束信息
EXEC sp_helpconstraint 't_archetype_revision_file'
在存储过程中查询到的约束信息有:
- Constraint_Type:列的约束类型,约束的类型有:
PRIMARY KEY
FOREIGN KEY
DEFAULT
CHECK
- Constraint_Name:用户或者系统定义的约束名称;
- Delete_action :针对外键约束,当外键删除时采取的操作,为No Action或者cascade;
- Update_Action:针对外键约束,当外键更新时采取的操作,为No Action或者cascade;
- Status_Enabled :针对外键约束和check约束,是否启用,当约束建立时默认是启用的;
- Status_For_Replication :针对外键和check约束,当复制的时候是否强制执行;
- Constraint_Keys :针对check和default约束显示的是表达式,针对其他约束显示的是列名;
2. 开启外键约束
通过Alter Table语句完成,示例如下:
Alter Table t_archetype_revision_file CHECK CONSTRAINT FK1jdbfqwxvcn37y16ofob43ywf
3. 关闭外键约束
Alter Table t_archetype_revision_file NOCHECK CONSTRAINT FK1jdbfqwxvcn37y16ofob43ywf
三、Oracle
数据库
Oracle中的外键约束的管理与SQL Server中的类似,也是统一管理的,针对的也是表的层次。外键约束的统一管理是在数据字典表user_constraints中。
1.查看约束
SELECT * FROM user_constraints
在里面有很多的字段,这里我们只关注相关的几项:
- CONSTRAINT_NAME:约束名称;
- CONSTRAINT__TYPE:约束类型,包括:
- R:外键约束;
- U:唯一约束;
- P:主键约束;
- C:check约束;
- O:用于视图,只读约束;
- ……
- TABLE_NAME:约束所在的表;
- STATUS:使用状态,ENABLED标识启用,DISABLED标识禁用;
但是在这个视图中,没有约束对应的表的列,可以通过连接user_cons_columns来查询,如下:
SELECT * FROM user_constraints t1 left join user_cons_columns t2 on t1.CONSTRAINT_NAME = t2.CONSTRAINT_NAME where t1.CONSTRAINT_NAME = 'LOGMNR_SESSION_EVOLVE$_PK'
2. 开启外键约束
默认情况下,建立约束时开启该约束。
alter table table_name enable constraint constraint_name
3. 关闭外键约束
alter table table_name disable constraint constraint_name
免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://yundeesoft.com/11830.html