2017-04-11 171 views

回答

2

蟑螂当前不允许将这些约束添加到现有表。

一种解决方法是创建要使用(包括NOT NULL约束)架构的新表,然后将数据迁移到使用INSERT...SELECT新表。

下面是一个例子:

CREATE TABLE tbl2 (id INT PRIMARY KEY, col_a INT NOT NULL); 
INSERT INTO tbl2 SELECT * FROM tbl1; 

这假定tbl1与同类型相同的列数,并没有在其版本的col_a任何NULL值。

这样做的缺点是它必须复制全部表数据,所以它在大型表上并不理想。

另一个解决办法是添加一个新列,与NOT NULL约束(这意味着它也需要一个DEFAULT),然后使用UPDATE从现有列设置的值,然后重命名新列,并掉落旧的。