如何在SQLite3中将列从NULL更改为NOT NULL?

时间:2016-10-09 02:39:54

标签: sqlite

例如,有一个名为Table1的表。

CREATE TABLE Table1 (
    aa INT PRIMARY KEY,
    bb INT
);

我想将bb更改为not null。但是sqlite不支持ALTER MODIFY。 那我是什么:

CREATE TABLE sqlitestudio_temp_table AS SELECT *
                                          FROM Table1;

DROP TABLE Table1;

CREATE TABLE Table1 (
    aa INT PRIMARY KEY,
    bb INT NOT NULL
);

INSERT INTO Table1 (
                       aa,
                       bb
                   )
                   SELECT aa,
                          bb
                     FROM sqlitestudio_temp_table;

DROP TABLE sqlitestudio_temp_table;

会出现错误:

Could not commit table structure. Error message: NOT NULL constraint failed: Table1.bb

1 个答案:

答案 0 :(得分:2)

这是使列NOT NULL的正确方法。

在这种情况下,它不起作用,因为该列已包含NULL值。 所以你必须删除这些行:

DELETE FROM Table1 WHERE bb IS NULL;

或将NULL值替换为任何其他值:

UPDATE Table1 SET bb = ... WHERE bb IS NULL;