Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/88.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_Foreign Keys_Entity Relationship - Fatal编程技术网

MySQL中的外键创建问题

MySQL中的外键创建问题,mysql,foreign-keys,entity-relationship,Mysql,Foreign Keys,Entity Relationship,我遵循了这篇文章:在两个表之间创建外键。每一次尝试都失败了。有什么我遗漏的吗 这真是令人沮丧,我从来没有想过会遇到这个问题 谢谢。到底出了什么问题?没有细节我们真的帮不了你 mysql> CREATE TABLE parent (id INT NOT NULL, -> PRIMARY KEY (id) -> ) ENGINE=INNODB; Query OK, 0 rows affected (0.01 sec) mys

我遵循了这篇文章:在两个表之间创建外键。每一次尝试都失败了。有什么我遗漏的吗

这真是令人沮丧,我从来没有想过会遇到这个问题


谢谢。

到底出了什么问题?没有细节我们真的帮不了你

mysql> CREATE TABLE parent (id INT NOT NULL,
    ->                      PRIMARY KEY (id)
    -> ) ENGINE=INNODB;
Query OK, 0 rows affected (0.01 sec)
mysql> CREATE TABLE child (id INT, parent_id INT,
    ->                     INDEX par_ind (parent_id),
    ->                     FOREIGN KEY (parent_id) REFERENCES parent(id)
    ->                       ON DELETE CASCADE
    -> ) ENGINE=INNODB;
Query OK, 0 rows affected (0.01 sec)

对我来说很好。

到底出了什么问题?没有细节我们真的帮不了你

mysql> CREATE TABLE parent (id INT NOT NULL,
    ->                      PRIMARY KEY (id)
    -> ) ENGINE=INNODB;
Query OK, 0 rows affected (0.01 sec)
mysql> CREATE TABLE child (id INT, parent_id INT,
    ->                     INDEX par_ind (parent_id),
    ->                     FOREIGN KEY (parent_id) REFERENCES parent(id)
    ->                       ON DELETE CASCADE
    -> ) ENGINE=INNODB;
Query OK, 0 rows affected (0.01 sec)
对我来说很好。

示例:

use trading_research;
drop table if exists stock_history;
create table stock_history
(
        company_id integer(4) NOT NULL,
        price_date date NOT NULL,
        primary key(company_id, price_date),
        opening_price decimal(10,2) NULL,
        closing_price decimal(10,2) NULL,
        high_price decimal(10,2) NULL,
        low_price decimal(10,2) NULL,
        adjusted_closing_price decimal(10,2) NULL,
        volume decimal(20, 2) NULL,
        constraint foreign key (company_id) references stock_company (company_id) on delete cascade on update cascade
);
如果您详细介绍了您正在尝试的内容和/或遇到的错误,我可以提供更多帮助。

示例:

use trading_research;
drop table if exists stock_history;
create table stock_history
(
        company_id integer(4) NOT NULL,
        price_date date NOT NULL,
        primary key(company_id, price_date),
        opening_price decimal(10,2) NULL,
        closing_price decimal(10,2) NULL,
        high_price decimal(10,2) NULL,
        low_price decimal(10,2) NULL,
        adjusted_closing_price decimal(10,2) NULL,
        volume decimal(20, 2) NULL,
        constraint foreign key (company_id) references stock_company (company_id) on delete cascade on update cascade
);

如果您详细说明您正在尝试的内容和/或遇到的错误,我可以提供更多帮助。

有一点您必须记住,如果您是子表/列,则其值在父表/列中不存在,您将始终遇到错误。

有一点您必须记住,如果您是子表/列,则其值在父表/列中不存在,您将始终得到一个错误。

您没有显示您尝试了什么或错误是什么,因此所有答案都只是猜测

以下是外键工作前必须正确的事项清单:

  • 必须启用InnoDB存储引擎

    mysql> SHOW VARIABLES LIKE 'have_innodb';
    
  • 两个表都必须使用InnoDB存储引擎(MyISAM不支持引用完整性约束)

    mysql>显示创建表;
    mysql>显示创建表;
    
  • 引用表中的列必须是键的最左边的列。通常这是主键,但InnoDB实际上允许它们成为任何键的一部分

  • 外键列及其引用的主键列必须是完全相同的数据类型(必须匹配有符号与无符号、int与bigint、字符串字符集等)。只允许字符串长度不同

  • 你必须得到正确的答案。:-)

  • 如果要向填充的表添加约束,则所有现有值必须满足该约束(感谢Jordan S.Jones在该线程中的介绍)


    • 您没有显示您尝试了什么或错误是什么,因此所有答案都只是猜测

      以下是外键工作前必须正确的事项清单:

      • 必须启用InnoDB存储引擎

        mysql> SHOW VARIABLES LIKE 'have_innodb';
        
      • 两个表都必须使用InnoDB存储引擎(MyISAM不支持引用完整性约束)

        mysql>显示创建表;
        mysql>显示创建表;
        
      • 引用表中的列必须是键的最左边的列。通常这是主键,但InnoDB实际上允许它们成为任何键的一部分

      • 外键列及其引用的主键列必须是完全相同的数据类型(必须匹配有符号与无符号、int与bigint、字符串字符集等)。只允许字符串长度不同

      • 你必须得到正确的答案。:-)

      • 如果要向填充的表添加约束,则所有现有值必须满足该约束(感谢Jordan S.Jones在该线程中的介绍)


      。。。你能告诉我们你到底想干什么吗?。。。你能告诉我们你的尝试到底是什么吗?这是我拍摄密钥创建时遇到问题的顺序。+1。我必须说我一直喜欢你的回答。他们很彻底,知识也很渊博。我想强调的是,要注意签名和未签名。很容易被忽视和抓到。这是我拍摄钥匙创作时遇到麻烦的顺序。+1。我必须说我一直喜欢你的回答。他们很彻底,知识也很渊博。我想强调的是,要注意签名和未签名。很容易被忽视和抓住。