在MySQL中的表中的外键中添加了一个标记为Customers_CustomerID的额外非空列,因此我无法根据我的作业输入或更新表。我该如何解决这个问题?
答案 0 :(得分:0)
有几种选择。我们可以1)删除列2)更改列以允许NULL值,3)更改列定义以指定列的非NULL DEFAULT值,4)添加BEFORE INSERT触发器以将非NULL值设置为列,5)在INSERT上提供有效值。很多可能性。
我们可以为每个选项的语法提供一些额外的帮助,但是如果没有列定义,我们就无法提供添加DEFAULT值属性所需的确切语法。
如果列在索引中使用或在外键约束中引用,则可能无法删除该列。删除列的语法如下:
ALTER TABLE mytable DROP customers_customerid ;
更改列定义的语法如下所示,以指定DEFAULT值:
ALTER TABLE mytable CHANGE
customers_customerid customers_customerid BIGINT NOT NULL DEFAULT '1' COMMENT 'foo' ;
^^^^^^^^^^^
但我们需要知道整个列定义,并重复一遍,添加/更改需要更改的位。上面的陈述包括关于数据类型等的猜测。
我们可以使用如下语句从表的定义中获取列的当前定义:
SHOW CREATE TABLE mytable;
注意:添加外键约束的语句不会向表中添加列。您执行的语句必须包含添加列的语法。
答案 1 :(得分:0)
您还没有真正定义您尝试修复的内容。你是说"无法进入或更新表格是什么意思"?你试图用什么工具更新它?
以下是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;