2013-03-03 9 views
25

既存のテーブルに2つの新しい列を追加します。テーブルに複数の列を追加し、それらのいずれかにデフォルトの制約を追加するにはどうすればよいですか?

そのうちの一つは、デフォルト値 とNOT NULL(だけでなく、既存の行に記入)でなければなりません。

私は、次の構文を試してみました:

Alter TABLE dbo.MamConfiguration 
    add [IsLimitedByNumOfUsers] [bit] NOT NULL, 
    CONSTRAINT IsLimitedByNumOfUsers_Defualt [IsLimitedByNumOfUsers] DEFAULT 0 
    [NumOfUsersLimit] [int] NULL 
go 

をしかし、それは例外がスローされます。どうすればいいですか?

答えて

41

あなたはこれを使用することができます:

ALTER TABLE dbo.MamConfiguration 
ADD [IsLimitedByNumOfUsers] [BIT] NOT NULL DEFAULT 0, 
    [NumOfUsersLimit] [INT] NULL 
GO 

またはこれを:

ALTER TABLE dbo.MamConfiguration 
ADD [IsLimitedByNumOfUsers] [BIT] NOT NULL 
     CONSTRAINT IsLimitedByNumOfUsers_Default DEFAULT 0, 
    [NumOfUsersLimit] [INT] NULL 
go 

より:ALTER TABLE

+5

私は常にオプション#2を指定することをお勧めします*あなたの制約*明示的な名前を与える* - 後でドロップする必要があればもっと簡単になります! –

+1

@marc_s:ええ、私は強くあなたに同意します! –

6

はこれを試してみてください。

ALTER TABLE dbo.MamConfiguration 
ADD [IsLimitedByNumOfUsers] [bit] NOT NULL DEFAULT 0,  
[NumOfUsersLimit] [int] NULL 
関連する問題