null可能な整数列がいくつかあるテーブルがあります。これはいくつかの理由で望ましくないため、すべてのnullを0に更新してから、これらの列をに設定しようとしていNOT NULL
ます。nullを0
に変更する以外に、データを保持する必要があります。
列を「」に変更する特定のSQL構文を探しています。nullを含まないようにデータが更新されたと想定します。ColumnA
not null
SQL Server 2000の使用。
null可能な整数列がいくつかあるテーブルがあります。これはいくつかの理由で望ましくないため、すべてのnullを0に更新してから、これらの列をに設定しようとしていNOT NULL
ます。nullを0
に変更する以外に、データを保持する必要があります。
列を「」に変更する特定のSQL構文を探しています。nullを含まないようにデータが更新されたと想定します。ColumnA
not 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];
これはより単純に見えますが、Oracleでのみ機能します。
ALTER TABLE [Table]
ALTER [Column] NUMBER DEFAULT 0 NOT NULL;
さらに、これを使用すると、単に変更するだけでなく、列を追加することもできます。この例では、値がnullの場合、デフォルト値(0)に更新されます。
の場合には 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"
私の場合、投稿された回答に問題がありました。私は以下を使用することになりました:
ALTER TABLE table_name CHANGE COLUMN column_name column_name VARCHAR(200) NOT NULL DEFAULT '';
変化する VARCHAR(200)
データ型にし、オプションでデフォルト値を変更します。
デフォルト値がない場合、デフォルトはnullで競合が発生するため、この変更を行うと問題が発生します。
例を見てみましょう:
TABLE NAME=EMPLOYEE
列EMPLOYEE_NAME
をに変更しますNOT NULL
。このクエリは、タスクに使用できます。
ALTER TABLE EMPLOYEE MODIFY EMPLOYEE.EMPLOYEE_NAME datatype NOT NULL;
列をnull以外にし、デフォルトを追加することも、SSMS GUIで行うことができます。
UPDATE myTable SET myColumn = 0