精华内容
下载资源
问答
  • Mysql数据库外键约束(foreign key).pdf
  • 数据库外键约束

    2020-05-17 09:00:29
    数据库外键约束 1.RESTRICT(mysql默认):拒绝更新或删除(是拒绝更新还是删除看外键的具体设置)主表被外键引用的列。 2.NO ACTION:同RESTRICT 3.SET NULL:更新或删除主表对应列,会使子表对应列的值变成NULL...

    数据库外键约束

    1.RESTRICT(mysql默认):拒绝更新或删除(是拒绝更新还是删除看外键的具体设置)主表被外键引用的列。

    2.NO ACTION:同RESTRICT

    3.SET NULL:更新或删除主表对应列,会使子表对应列的值变成NULL(子表该列不能默认为NOT NULL)。

    4.CASCADE:联动,即主表的改动会引发子表的改动。

    5.SET DEFAULT:(InnoDB不支持)

    展开全文
  • 数据库外键约束方式

    2012-04-11 19:33:56
    本文档是数据库外键约束方式指南 需要的朋友请下载 保证可用
  • 关闭数据库外键约束

    千次阅读 2017-08-06 19:54:27
    当向数据库中插入数据的时候,如果有表之间的关系十分复杂,尤其是是存在各种外键关系,这是需要暂时关闭这种针对外键约束的检查,本文针对以下三种数据库进行了一个总结

    本文的测试环境是:

    • 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
    展开全文
  • mySql数据库外键约束条件

    千次阅读 2014-05-12 14:42:05
    在MySQL 3.23.44版本后,InnoDB引擎类型的表支持了外键约束。 外键的使用条件: 1.两个表必须是InnoDB表,MyISAM表暂时不支持外键(据说以后的版本有可能支持,但至少目前不支持); 2.外键列必须建立了索引,...

    在MySQL 3.23.44版本后,InnoDB引擎类型的表支持了外键约束。

    外键的使用条件:

    1.两个表必须是InnoDB表,MyISAM表暂时不支持外键(据说以后的版本有可能支持,但至少目前不支持);
    2.外键列必须建立了索引,MySQL 4.1.2以后的版本在建立外键时会自动创建索引,但如果在较早的版本则需要显示建立;
    3.外键关系的两个表的列必须是数据类型相似,也就是可以相互转换类型的列,比如int和tinyint可以,而int和char则不可以;

    外键的好处:可以使得两张表关联,保证数据的一致性和实现一些级联操作;

    外键的定义语法:

    [CONSTRAINT symbol] FOREIGN KEY [id] (index_col_name, ...)
        REFERENCES tbl_name (index_col_name, ...)
        [ON DELETE {RESTRICT | CASCADE | SET NULL | NO ACTION | SET DEFAULT}]
        [ON UPDATE {RESTRICT | CASCADE | SET NULL | NO ACTION | SET DEFAULT}]
    该语法可以在 CREATE TABLE 和 ALTER TABLE 时使用,如果不指定CONSTRAINT symbol,MYSQL会自动生成一个名字。
    ON DELETE、ON UPDATE表示事件触发限制,可设参数:
    RESTRICT(限制外表中的外键改动)
    CASCADE(跟随外键改动)c
    SET NULL(设空值)
    SET DEFAULT(设默认值)
    NO ACTION(无动作,默认的)

    展开全文
  • Mysql数据库外键约束(foreign key)

    千次阅读 2017-04-09 21:19:01
    备注: 外键约束中,被约束字段的值必须来自父键的参考字段FR:海涛高软(QQ技术交流群:386476712)

    这里写图片描述


    备注:
    1 外键约束中,被约束字段的值必须与其参考的父键字段值保持一致,否则插入会报错
    2 主键约束=not null + unique
    3 fk_school 表示为外键约束名字



    分类建表
    在这里插入图片描述

    图书建表

    mysql> create table book(
        -> id int primary key auto_increment,
        -> category int,
        -> bookname varchar(60),
        -> author varchar(60),
        -> price float,
        -> picNameOld varchar(60),
        -> picNameNew  varchar(60),
        -> description varchar(60),
        -> constraint fk_category foreign key (category) references category(id)
        -> );
    

    category字段参考category表中id字段
    constraint 关键字 表示定义个约束
    fk_category 为约束名

    FR:海涛高软(QQ技术交流群:386476712)

    展开全文
  • 当取值为Cascade时,则当在父表(即外键的来源表)中删除对应记录时,首先检查该记录是否有对应外键,如果有则也删除外键在子表(即包含外键的表)中的记录。 当取值为Set Null时,则当在父表(即外键的来源表)中...
  • 数据库外键约束的几种方法及区别

    千次阅读 2019-04-10 21:54:15
    1、cascade级联模式 ,父表的操作,对应的子表关联的数据也跟着操作 2、district :严格模式(默认的...3、set null:(置空模式)父表被操作之后,子表对应的外键字段被置空。 4、no action 拒绝删除或者更新父表。 ...
  • SQL的外键约束可以实现级联删除与级联更新;    ORACLE则只充许级联删除。    SQL级联删除与级联更新使用格式:   CREATE TABLE A001(ID INT PRIMARY KEY,NAME VARCHAR(20))  CREATE TABLE A002(ID ...
  • 禁用启用数据库外键约束

    千次阅读 2008-10-25 11:04:00
    -- =====================================================-- 删除数据库中的所有数据(通过禁用约束)-- 不好的地方在于如果本身有已经禁用的约束,执行这个后会开启它-- 邹建 2005.09(引用请保留此信息)-- =========...
  • 参考链接:...   报错原因:由于外键约束导致操作表失败; Cannot add or update a child row: a foreign key constraint fails (`info`.`student`, CONSTRAINT `FK_STUDENT_REF_...
  • 约束保证了数据的完整性和一致性。下面这篇文章主要给大家介绍了关于MariaDB数据库外键约束的相关资料,文中通过示例代码介绍的非常详细,需要的朋友可以参考借鉴,下面随着小编来一起学习学习吧
  • 数据库 外键约束

    2017-07-04 17:12:21
    一:首先是外键的定义  如果一个字段X在一张表(表一)中是主关键字,而在另外一张表(表二)中不是主关键字,则字段X称为表二的外键;换句话说如果关系模式R1中的某属性集不是自己的主键,而是关系模式R2的主键,...
  • MySQL数据库——外键约束

    千次阅读 2019-05-06 16:47:23
    文章目录方案一:单张表方案二:两张表方案三:两张表并添加外键约束 把用户信息及其收货地址保存在数据中 方案一:单张表 创建表 create table user_info( id char(36) primary key, user_name varchar(30) not ...
  • Oracle数据库-外键约束

    千次阅读 2018-03-08 16:48:48
    在企业实战中有80%的企业不使用外键约束,有20%的企业使用外键约束,所以,外键约束加与不加,看的是实际情况下的公司要求是怎样的那问题来了,外键约束的作用是什么??1. 就是当两张表关联时,是通过id关联的, 外键所.....
  • 数据库外键约束

    2013-09-10 18:19:11
    1.删除所有外键约束 select 'alter table '||table_name||' drop constraint '||constraint_name||';' from user_constraints where constraint_type='R' 2.禁用所有外键约束 select 'alter table '||
  • 主键约束:规定主键唯一、非空 alter table device add constraint con_test unique (device_id) --device是表名,con_...外键约束:建立两张表之间的关系,子表要引用父表的列。 foreign key references c...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 96,011
精华内容 38,404
关键字:

数据库外键约束怎么写