2016-10-09 9 views
-3

たとえば、Table1という名前のテーブルがあります。SQLite3でカラムをNULLからNOT NULLに変更するには?

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

bbを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

あなたは、null値を含む列にパラメータ「NULLでない」を追加した場合エラーが発生します。ヌルをゼロで置き換えるには 'SELECT aa、ISNULL(bb、0)FROM sqlitestudio_temp_table'が必要です。あるいは、NULL bbを無視するために' SELECT aa、bb FROM sqlitestudio_temp_table WHERE bb is not NULL 'で無視することができます。 – kpie

+0

Thx、それは私のために働く。 – user3427343

答えて

1

これはNOT NULL列を作成するための正しい方法です。

この場合、列には既にNULL値が含まれているため、この場合は機能しません。

DELETE FROM Table1 WHERE bb IS NULL; 

または他の値にNULL値を置き換えます: だから、あなたはそれらの行を削除するか必要があり

UPDATE Table1 SET bb = ... WHERE bb IS NULL; 
関連する問題