zoukankan      html  css  js  c++  java
  • mysql 自关联表的外键操作

    建表sql

    CREATE TABLE `t1` (
    `id` varchar(10) NOT NULL,
    `pid` varchar(10) default NULL,
    PRIMARY KEY (`id`),
    KEY `FK_t1` (`pid`),
    CONSTRAINT `FK_t1` FOREIGN KEY (`pid`) REFERENCES `t1` (`id`) ON DELETE CASCADE
    )

    数据:

    insert into t1(id,pid) values(1,1);
    insert into t1(id,pid) values(2,1);
    insert into t1(id,pid) values(3,2);
    insert into t1(id,pid) values(4,2);
    insert into t1(id,pid) values(5,3);

    ---------------------------------

     自关联:本例中,pid依赖于本表的id字段。

    在外键关系中,有下列4个选项:

    1.层叠 

    2.设为null

    3.无动作:

    4.约束:

     当执行 delete from t1 where pid='1' 语句时

    1.层叠   所有pid=1的数据均删除,数据1.2.均删除,数据3.4.行因为依赖于第2行,也被删除,数据5依赖于第3行,同样删除。

    2.设为null  pid=1的数据被逐条删除,数据2.被置为null了,很庆幸就不删除了。

    3.无动作: 报错

    4.约束:报错

    总结:自关联表可以视为特殊的两张表,

    注:oracle中只有前3个对应选项。

  • 相关阅读:
    博客园页面设置(转载)
    正则表达式30分钟入门教程 (转载)
    如何写出优雅的代码
    centos7 nginx+php5.6+mysql安装与配置
    git 进阶
    js 异步解决方案
    行动派
    unicode 与 utf-8
    bower command not found--windows
    click事件细节
  • 原文地址:https://www.cnblogs.com/malaya/p/3678802.html
Copyright © 2011-2022 走看看