Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/ssh/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 为什么外键没有';不更新?_Mysql_Sql_Foreign Keys - Fatal编程技术网

Mysql 为什么外键没有';不更新?

Mysql 为什么外键没有';不更新?,mysql,sql,foreign-keys,Mysql,Sql,Foreign Keys,我在列TEMP1.aa(主键在TEMP1中)中插入数据,但它不会导入到TEMP2.cc列(外键在TEMP2中) 为什么? 我想如果在主键中插入数据,它会自动插入外键!如果这是真的,那么如果我们插入主键,外键必须更新 外键不会更新子引用,它只确保存储在列中的值已存在于父表中 但是MySQL支持级联更新,方法是在TEMP1表中的外键约束中添加ON update CASCADE。否则,您需要考虑使用触发器进行更详细的规则/要求。 参考: 外键不会更新子引用,它只确保存储在列中的值已存在于父表中

我在列
TEMP1.aa
(主键在TEMP1中)中插入数据,但它不会导入到
TEMP2.cc
列(外键在TEMP2中)

为什么?


我想如果在主键中插入数据,它会自动插入外键!如果这是真的,那么如果我们插入主键,外键必须更新

外键不会更新子引用,它只确保存储在列中的值已存在于父表中

但是MySQL支持级联更新,方法是在TEMP1表中的外键约束中添加
ON update CASCADE
。否则,您需要考虑使用触发器进行更详细的规则/要求。

参考:


外键不会更新子引用,它只确保存储在列中的值已存在于父表中

但是MySQL支持级联更新,方法是在TEMP1表中的外键约束中添加
ON update CASCADE
。否则,您需要考虑使用触发器进行更详细的规则/要求。

参考:


  • 不,外键不是那样工作的

    外键用于通过键将两个表链接在一起。在一个表中,您有
    主键
    和与该实体相关的所有属性

    在另一个表中,您有一个
    外键
    ,它告诉数据库“嘿,您,用户,您只能在这里插入一个值,如果它也作为
    主键
    存在于我的参考表中”

    用户仍然可以选择是否要在外部表中插入一行



    如果您需要外部表在主表中始终有一行引用其对应的行,那么您可以将该表转换为其他列,因为它们是同一实体的属性。这方面也有例外,但详细说明只会增加您的困惑。

    不,外键不是这样工作的

    外键用于通过键将两个表链接在一起。在一个表中,您有
    主键
    和与该实体相关的所有属性

    在另一个表中,您有一个
    外键
    ,它告诉数据库“嘿,您,用户,您只能在这里插入一个值,如果它也作为
    主键
    存在于我的参考表中”

    用户仍然可以选择是否要在外部表中插入一行


    如果您需要外部表在主表中始终有一行引用其对应的行,那么您可以将该表转换为其他列,因为它们是同一实体的属性。这方面也有例外,但详细讨论只会增加您的困惑。

    考虑一下这些表格

    Fruits
    ID   Name
    1    Apple
    2    Orange
    3    Grapes
    
    Sales
    ID   Fruit   Amount
    1    1       2.45
    2    3       1.23
    3    1       2.23
    4    2       6.22
    
    销售(水果)到水果(ID)
    上的外键确保销售中的每个水果值必须与水果的ID匹配。不,关于你的问题

    我在列aa(temp1中的主键)中插入数据,但它不会导入TMP2.cc列(temp2中的外键)

    所以我们在水果中插入一条记录(ID:4,名称:Pear)。您想将其导入销售吗?怎么做

    阅读一些关于外键的基础知识

    考虑这些表格

    Fruits
    ID   Name
    1    Apple
    2    Orange
    3    Grapes
    
    Sales
    ID   Fruit   Amount
    1    1       2.45
    2    3       1.23
    3    1       2.23
    4    2       6.22
    
    销售(水果)到水果(ID)
    上的外键确保销售中的每个水果值必须与水果的ID匹配。不,关于你的问题

    我在列aa(temp1中的主键)中插入数据,但它不会导入TMP2.cc列(temp2中的外键)

    所以我们在水果中插入一条记录(ID:4,名称:Pear)。您想将其导入销售吗?怎么做

    阅读一些关于外键的基础知识


    我认为你根本不懂外键。除非你有某种触发器设置,否则某个外键并不意味着它会自动更新。我认为你根本不懂外键。除非你有某种触发器设置,仅仅因为某个东西是外键并不意味着它会自动更新。更新级联与question@Richard又名cyberkiwi:如果插入(意味着添加新的父表数据),就不会有要更正的子引用。检查OPs问题的编辑历史,你会发现英语不是他们的母语。与问题无关。更新级联与question@Richard又名cyberkiwi:如果插入(意味着添加新的父表数据),就不会有要更正的子引用。检查OPs问题的编辑历史,你会发现英语不是他们的母语。