首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >外键创建了额外的列mySQL

问外键创建了额外的列mySQL
EN

Stack Overflow用户
提问于 2018-05-18 05:08:03
回答 2查看 52关注 0票数 0

在MySQL中的一个表中,我的一个外键添加了一个额外的非空列,标记为Customers_CustomerID,因此我无法输入或更新我的赋值所需的表。我该如何解决这个问题呢?

EN

回答 2

Stack Overflow用户

发布于 2018-05-18 05:23:10

有几个选项。我们可以1)删除列2)更改列以允许空值,3)更改列定义以指定列的非空默认值,4)添加BEFORE INSERT触发器以设置列的非空值,5)在INSERT上提供有效值。有很多可能性。

我们可以为每个选项的语法提供一些额外的帮助,但是如果没有列定义,我们就无法给出添加缺省值属性所需的确切语法。

如果列在索引中使用或在foreign key约束中引用,则可能无法删除该列。删除该列的语法如下所示:

代码语言:javascript
复制
ALTER TABLE mytable DROP customers_customerid ;

更改列定义的语法如下所示,以指定默认值:

代码语言:javascript
复制
ALTER TABLE mytable CHANGE 
  customers_customerid customers_customerid BIGINT NOT NULL DEFAULT '1' COMMENT 'foo' ;
                                                            ^^^^^^^^^^^  

但我们需要知道整个列的定义,并重复这一点,只添加/更改需要更改的位。上面的语句包括对数据类型的猜测,等等。

我们可以使用如下语句从表的定义中获得列的当前定义:

代码语言:javascript
复制
SHOW CREATE TABLE mytable;

注意:添加外键约束的语句不会向表中添加列。您执行的语句必须包含添加列的语法。

票数 0
EN

Stack Overflow用户

发布于 2018-05-18 05:26:47

您还没有真正定义您要尝试修复的内容。你说你“不能输入或更新表”是什么意思?你想用什么工具来更新它?

下面是MySQL documentation中的一个示例,介绍如何创建两个表并使用外键将它们链接起来:

代码语言:javascript
复制
CREATE TABLE parent (
    id INT NOT NULL,
    PRIMARY KEY (id)
) ENGINE=INNODB;

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;
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50400521

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档