6

データベース プロジェクトを使い始めて、単純なタスクに苦労しています。である新しい列を追加したい場合NOT NULL、テーブルに既にデータがある場合、どのように機能させることができますか?

以前は差分スクリプトを書いていましたが、そのような場合は次のように書きます。

-- ... ADD COLUMN X ... 
-- insert data into x
-- ... ALTER COLUMN X NOT NULL

データベースプロジェクトでそのようなケースをどのように処理する必要がありますか?

ヒントsl3dg3のThx

4

3 に答える 3

5

私はついに2つの可能な方法を見つけました。一言で言えば:

  • デフォルトの制約を使用する(Rainが提案するように)
  • デプロイ後のスクリプトにデータを入力し、default-constraintを削除します
  • デプロイ後、ソースからdefault-constraintを削除します

または

  • デプロイメント前スクリプトのテーブルのデータを一時テーブルにバックアップし、ターゲットテーブルからデータを削除します
  • デプロイ後のスクリプトで、新しいNOT NULL-列の新しいデータを含め、データをターゲットテーブルに戻し、テーブルを削除します

ここにあります:http ://social.msdn.microsoft.com/Forums/en-US/vstsdb/thread/49bf2a88-d80d-4a9f-970e-728bd530332e/

またはここ: http: //blogs.msdn.com/b/bahill/archive/2009/03/30/managing-data-motion-during-your-deployments-part-1.aspx

どちらも余分な作業を意味します。私は、このような一般的なケースのフレームワークからのサポートが増えることを望んでいました。しかし、少なくともそれはそのように行うことができます。

于 2012-07-27T14:35:39.270 に答える
4

また、列の DEFAULT 値を指定する代わりに、[DB の公開] ダイアログから行うこともできます。Advanced->Advanced Deployment Options に移動し、[Generate Smart Defaults] ボックスをオンにします。

VS の説明から: スマート デフォルトの生成: null 値を許可しない列を持つデータを含むテーブルを更新するときに、自動的にデフォルト値を提供します。

于 2014-12-11T12:37:51.247 に答える
0

列の作成中にデフォルト値を指定することで、null 以外の列を追加できます。

于 2012-07-27T07:39:37.550 に答える