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个对应选项。

  • 相关阅读:
    搜狗搜索用户体验
    第六周学习进度条
    对我们团队NBPL的改进方案意见
    钱多多软件制作第七天
    团队冲刺第二周05
    团队冲刺第二周04
    团队冲刺第二周03
    输入法评价
    团队冲刺第二周02
    团队冲刺第二周01
  • 原文地址:https://www.cnblogs.com/malaya/p/3678802.html
Copyright © 2011-2022 走看看