2012-01-06 12 views
1

私は、既存のテーブル内の列のデフォルト値を変更する必要があります。SQL Serverの - 変更する列のデフォルト値

私は仮定(と私は実際にこれを「確認」ネット上のいくつかの例を見つけました)私は のALTER TABLEテーブルALTER COLUMN列のSET DEFAULTを行うことができることを「何か」が、私は構文エラーを取得し、このhttp://msdn.microsoft.com/en-us/library/ms190273.aspx DEFAULTに応じですサポートされていません。

次のアイデアは、データベースからデフォルトの制約を削除することでしたが、私は、テーブルが作成されたとき、私は名前によってそれを参照することはできませんので、制約の名前とSQLは、すべての展開にランダムな名前を生成していなかったことがわかりました。

私は、制約の名前を返すSYSテーブルからクエリを思い付いた:私は、文字列の連結でクエリを記述しようと私がしなければならないかについて考えるのをやめることはできません

select o.name from sys.objects o 
join sys.columns c on o.object_id = c.default_object_id 
join sys.tables t on c.object_id = t.object_id 
where t.name='TableName' and c.name='ColumnWithDefValue' 

これをすべて行うには良い方法です。助言がありますか?

TL; DRのバージョン:SQL ServerのR2内の列のデフォルトの制約を変更する最も簡単な方法は何ですか?

おかげ

+0

それを再作成するために持っているように、私は完全なSQLを使用しています見えます。 (私はSETキーワードを省略した場合またはDEFAULT)私は取得していますエラーがSETで構文エラーです –

+1

私は(私はいつも私の制約に名前を付ける理由です)時間にあまりにも一度これを打ちます。私は(私はDF_TableName__ColumnNameを使用)その後、標準化された名前で再作成、それをドロップする動的なコードをビルド、システム生成名を引き出し、your'reがやって何をやりました。 –

答えて

1

あなたが制約を削除してからコピーしたリンクは、SQLコンパクトバージョンへのリンクである

http://bypsoft.blogspot.com/2007/10/changing-default-column-values-sql.html

+0

私はそれを見てきましたが、問題は制約の名前を知らないため、簡単に削除できないということです。 –

+0

SELECT * FROM sys.default_constraints WHERE parent_object_id = OBJECT_ID( 'TableName') – msmucker0527

+0

@ msmucher0527:そのクエリはテーブルのすべてのデフォルト制約を返しますが、それでもカラムごとに制限する必要がありますが、 ... –