2009-05-14 12 views
3

私の仕事で私たちは現在、環境間で、当社のデータベースの変更をプッシュするいくつかの深刻な痛みを持っています。既存のテーブルにnull以外の新しい列を作成すると、問題が表示され始めます。 SQL Compareによって生成されるスクリプトは、NULLを使用できない列を作成するため、常に失敗します。スクリプトを手動で編集しなければならないという選択肢があることを期待していました。これを回避する方法はありますか?もしそうでなければ、どうやってそれを処理しますか?SQL移行スクリプトにカスタム移行スクリプトを追加する簡単な方法はありますか?

答えて

0

テーブルを作成します。

create table #bingo (id int) 

は、値を追加します。

update #bingo set userid = 1 where id = 1 
0123:新しい列を移入

alter table #bingo add userid int 

insert into #bingo values (1) 

は、新しい列を追加します。

変更にN​​ULL可能ではない、新しい列:

alter table #bingo alter column userid int not null 

手動レッドゲートSQLを編集しなければならないが、それはこのように動作させるための比較します。

0

はどのようにしてNOT NULL列を埋めることを計画していますか?どのようにSQL Compareを実装するかはわかりません。なぜなら、SQL Compareは、どのように埋めていくのかわからないからです。デフォルトでカラムを作成することができ

、その後、単にあなたが値のためのいくつかのソースを持っている場合は、適切に列を更新するために生成したスクリプトの最後に更新ステートメントを追加します。

+1

私はそれがテーブルを更新した後、非NULL可能であることを列を変更するために私のためのスペースを残し、その後、nullとしてすべての列を作成したように、それを設定する方法があった期待していました。 –

0

新しいNOT NULL列を作成するときに、新しいnullでないカラムにデフォルトを追加し、既存のすべての行がどのような値を得るのですか?わからない場合は、列をNULL可能にします。

+0

これは変更によって異なりますが、一般的にはデータベース自体から引き出されます。 –

+0

@Correl、どのようにあなたが今までにデフォルトずに、作業する(行の)既存のテーブルの上に新しいNOT NULL列を期待できますか?列の作成後にデフォルトを削除して、アプリケーションに適切な値を挿入させたい場合があります。 –

+2

私はレッドゲートが私のスクリプトに値を挿入する場所を与えるだろうと期待していました。カラムをnullableとして作成する場合と同様に、私のカスタムロジックを追加してカラムをnull値ではないものとして変更する空のセクションを残しておきます。私は手でこれを行うことができますが、私はRedGateがそれをより簡単にすることを望んでいました。 –

関連する問題