在MySQL中的一个表中,我的一个外键添加了一个额外的非空列,标记为Customers_CustomerID,因此我无法输入或更新我的赋值所需的表。我该如何解决这个问题呢?
发布于 2018-05-18 05:23:10
有几个选项。我们可以1)删除列2)更改列以允许空值,3)更改列定义以指定列的非空默认值,4)添加BEFORE INSERT触发器以设置列的非空值,5)在INSERT上提供有效值。有很多可能性。
我们可以为每个选项的语法提供一些额外的帮助,但是如果没有列定义,我们就无法给出添加缺省值属性所需的确切语法。
如果列在索引中使用或在foreign key约束中引用,则可能无法删除该列。删除该列的语法如下所示:
ALTER TABLE mytable DROP customers_customerid ;更改列定义的语法如下所示,以指定默认值:
ALTER TABLE mytable CHANGE
customers_customerid customers_customerid BIGINT NOT NULL DEFAULT '1' COMMENT 'foo' ;
^^^^^^^^^^^ 但我们需要知道整个列的定义,并重复这一点,只添加/更改需要更改的位。上面的语句包括对数据类型的猜测,等等。
我们可以使用如下语句从表的定义中获得列的当前定义:
SHOW CREATE TABLE mytable;注意:添加外键约束的语句不会向表中添加列。您执行的语句必须包含添加列的语法。
发布于 2018-05-18 05:26:47
您还没有真正定义您要尝试修复的内容。你说你“不能输入或更新表”是什么意思?你想用什么工具来更新它?
下面是MySQL documentation中的一个示例,介绍如何创建两个表并使用外键将它们链接起来:
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;https://stackoverflow.com/questions/50400521
复制相似问题