私は多くのビットタイプの列を持つデータベースを持っています。 他の列を追加した後、すべての古い列にデフォルトの「false」値が必要です。 0にそれぞれ古い列を更新するにはMSSQLのすべてのデータベースで、すべてのビット型カラムNULL値をfalseに変更するにはどうすればよいですか?
7
A
答えて
18
、あなたは(列ごとに)このクエリを使用することができます。
その後UPDATE MyTable
SET OldCol1 = 0
WHERE OldCol1 IS NULL
、あなたが任意の将来の値として0のデフォルト値を持つようにしたい場合はこれを使用してください:
ALTER TABLE MyTable
ALTER COLUMN OldCol1 bit NOT NULL
ALTER TABLE MyTable
ADD CONSTRAINT OldCol1ShouldBeFalse DEFAULT 0 FOR OldCol1
これを各古い列に対して実行する必要がありますので、多すぎることはありません。
3
このネストされた動的SQLは、これを1つずつ実行したくない場合にジョブを実行します。列にはまだデフォルト制約(列がNULL可能であっても可能です)がないことを検証するために最初にチェックは行われませんが、スクリプトはそのように拡張される可能性がありますそれがデフォルトの場合のそのような制約1)。
DECLARE @sql NVARCHAR(MAX);
SET @sql = N'DECLARE @sql NVARCHAR(MAX); SET @sql = N'''';';
SELECT @sql = @sql + N'
SELECT @sql = @sql + N''UPDATE ' + QUOTENAME(name)
+ '.'' + QUOTENAME(s.name) + ''.'' + QUOTENAME(t.name) + ''
SET '' + QUOTENAME(c.name) + '' = 0
WHERE '' + QUOTENAME(c.name) + '' IS NULL;
ALTER TABLE ' + QUOTENAME(name) + '.'' + QUOTENAME(s.name)
+ ''.'' + QUOTENAME(t.name)
+ '' ADD CONSTRAINT '' + c.name + ''_FalseByDefault
DEFAULT (0) FOR '' + QUOTENAME(c.name) + '';
ALTER TABLE ' + QUOTENAME(name) + '.'' + QUOTENAME(s.name)
+ ''.'' + QUOTENAME(t.name)
+ '' ALTER COLUMN '' + QUOTENAME(c.name) + '' BIT NOT NULL;
''
FROM ' + QUOTENAME(name) + '.sys.columns AS c
INNER JOIN ' + QUOTENAME(name) + '.sys.tables AS t
ON c.[object_id] = t.[object_id]
INNER JOIN ' + QUOTENAME(name) + '.sys.schemas AS s
ON t.[schema_id] = s.[schema_id]
WHERE c.system_type_id = 104 AND c.is_nullable = 1
AND t.is_ms_shipped = 0;'
FROM sys.databases WHERE database_id > 4;
SET @sql = @sql + 'PRINT @sql;
--EXEC sp_executesql @sql;';
EXEC sp_executesql @sql;
それはを見て、本当に醜いだ、とPRINT
コマンドが必ずしも原因Management Studioの出力制限のために完全ではないだろう。しかし、最初のいくつかのコマンドが正しいと確信したら、2番目の最後の行をコメントアウトしてコメントを外し、スクリプトを再度実行して変更を加えることができます。いくつかは失敗するかもしれないので、GOはそこにあります。潜在的なエラーと実際のdb/table/columnをより簡単に関連付けるためにステータスメッセージを出力できるように、db/table/columnの組み合わせごとに印刷出力を追加することができます。
関連する問題
- 1. Django - 列のすべての値をnullに変更するにはどうすればよいですか?
- 2. MySQL - すべてのデータベースでカラムのデータ型を変更するには?
- 3. クラスのすべてのインスタンスのプロパティの値を変更するにはどうすればよいですか?
- 4. すべてのRoRモデルでinclude_root_in_jsonをfalseに設定するにはどうすればよいですか?
- 5. Pythonですべての負の数をゼロに変更するにはどうすればよいですか?
- 6. すべての製品についてmagento 1の税金を変更するデータベース項目を変更するにはどうすればよいですか?
- 7. すべての変更に対してorderByを更新するにはどうすればいいですか
- 8. すべてのアプリでアクセントの色をプログラムで変更するにはどうすればよいですか?
- 9. データベース内のすべてのフィールドのすべての書式を変更するにはどうすればよいですか?
- 10. Androidアプリケーションですべてのアクティビティトランジションを一度に変更するにはどうすればよいですか?
- 11. セルフトラッキングエンティティに対するすべての変更を元に戻すにはどうすればよいですか?
- 12. Visual Studioプロジェクトのすべてのフォームでプロパティを変更するにはどうすればよいですか?
- 13. すべてのデバイスでテキストのサイズを変更するにはどうすればよいですか?
- 14. スクロールするすべての画像の色を変更するにはどうすればよいですか?
- 15. すべてのフォームのパブリックプロパティの値を更新するにはどうすればよいですか? VB.net
- 16. スイングアプリケーションのすべてのフォントのサイズのみを変更するにはどうすればよいですか?
- 17. すべてのインデックスのフィールドまたはタイプを変更するにはどうすればよいですか?
- 18. すべてのグリッドのExcelツールバーの名前を変更するにはどうすればよいですか?
- 19. 同じクラスのすべてのタグのコンテンツを変更するにはどうすればよいですか?
- 20. ハイチャートのすべてのバブルの背景色を変更するにはどうすればよいですか?
- 21. dxDataGridのテキストを「すべて選択」に変更するにはどうすればよいですか?
- 22. すべてのパッチを同じランダムなpcolorに変更するにはどうすればよいですか?
- 23. ChromeのすべてのCSS変更を確認するにはどうすればよいですか?
- 24. すべての負の数を正のpythonに変更するにはどうすればいいですか?
- 25. クリックイベントですべてのアクティビティ(ボタンテキスト、テキストビューなど)のすべてのテキストを変更するにはどうすればよいですか?
- 26. これはどれがmssqlで効率的ですか?設定ビット列のデフォルト値は0(または)で、すべてのクエリでnullをチェックしますか?
- 27. MySQLのすべてのデータベースにSQLダンプをインポートするにはどうすればよいですか?
- 28. sqliteにデータベースのすべてのトリガを一覧表示するにはどうすればよいですか?
- 29. mysqlはカラム内のすべての値を変更します
- 30. アンドロイドのJPEGピクセルをすべて変更するにはどうすればよいですか?