例如,有一个名为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
答案 0 :(得分:2)
这是使列NOT NULL的正确方法。
在这种情况下,它不起作用,因为该列已包含NULL值。 所以你必须删除这些行:
DELETE FROM Table1 WHERE bb IS NULL;
或将NULL值替换为任何其他值:
UPDATE Table1 SET bb = ... WHERE bb IS NULL;