複数のNULL可能な整数列を含むテーブルがあります。これはいくつかの理由で望ましくないので、すべてのnullを0に更新してからこれらの列をNOT NULL
。 nullをからに変更する以外に0
データは保存されなければならない。
探しています特定のSQL構文列を変更する(それを呼び出す)ColumnA
から)not null
msgstr "データがnullを含まないように更新されたとします。
を使うSQL Server 2000。
まず、現在のNULL値をすべて消します。
UPDATE [Table] SET [Column]=0 WHERE [Column] IS NULL
次に、テーブル定義を更新してNULLを許可しないようにします。
ALTER TABLE [Table] ALTER COLUMN [Column] INTEGER NOT NULL
私は同じ問題を抱えていましたが、以前はデフォルトでnullを使っていましたが、今度は0をデフォルトにしたいと思います。それにはmdbの解の後にもう1行追加する必要があります。
ALTER TABLE [Table] ADD CONSTRAINT [Constraint] DEFAULT 0 FOR [Column];
2つのステップでそれをしなければならないでしょう:
UPDATE MyTable SET MyNullableColumn = 0
WHERE MyNullableColumn IS NULL
ALTER TABLE MyTable
ALTER COLUMN MyNullableColumn MyNullableColumnDatatype NOT NULL
これは私のために働いた:
ALTER TABLE [Table]
Alter COLUMN [Column] VARCHAR(50) not null;
列が一意の識別子ではない限り
UPDATE table set columnName = 0 where columnName is null
それから
テーブルを変更してフィールドをnull以外に設定し、デフォルト値の0を指定します。
これはもっと簡単に見えますが、Oracle上でのみ動作します。
ALTER TABLE [Table]
ALTER [Column] NUMBER DEFAULT 0 NOT NULL;
さらに、これを使用して、単に変更するだけでなく、列を追加することもできます。 値がnullの場合、この例ではデフォルト値(0)に更新されます。
私の場合、投稿された回答に問題がありました。私は次のようにしました。
ALTER TABLE table_name CHANGE COLUMN column_name column_name VARCHAR(200) NOT NULL DEFAULT '';
変化するVARCHAR(200)
データ型に変更し、オプションでデフォルト値を変更します。
デフォルト値が設定されていない場合は、デフォルト値がnullになり競合が発生するため、この変更を行う際に問題が発生します。
の場合FOREIGN KEY CONSTRAINT
...主キーテーブルの列に '0'が存在しない場合は問題があります。その解決策は...
ステップ1:
このコードを使用してすべての制約を無効にします。
EXEC sp_msforeachtable "ALTER TABLE ? NOCHECK CONSTRAINT all"
ステップ2:
RUN UPDATE COMMAND (as mentioned in above comments)
RUN ALTER COMMAND (as mentioned in above comments)
STEP3:
このコードを使用してすべての制約を有効にします。
exec sp_msforeachtable @command1="print '?'", @command2="ALTER TABLE ? WITH CHECK CHECK CONSTRAINT all"
JDK(OracleがサポートしているApache Derbyのディストリビューション)に含まれている作り付けのjavaDBのために、以下が私のために働きました
alter table [table name] alter column [column name] not null;
以下のSQLを使用して既存のDB列の定義を変更できます。
ALTER TABLE mytable modify mycolumn datatype NOT NULL;
NOT NULL
大量のログ記録を引き起こす可能性があります。 - Martin Smith