2017-04-11 181 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從現有列設置的值,然後重命名新列,並掉落舊的。