2012-03-20 10 views
5

何かを試してみると、既定値を列にバインドできないという問題が発生します。T-SQLの列にあらかじめ定義された既定値を追加

私の目標は、列を変更し、あらかじめ定義されているデフォルトのTrueをその列に付加することです。

私は間違っていますか?私はのALTER TABLEライン上のエラー

メッセージ128、レベル15、状態1、行1

は名前 "dbo.Trueは" ない取得この例では

CREATE default [dbo].[True] as (1) 
GO 

CREATE TABLE dbo.aaa (column_a INT, column_b char(1)) ; 
GO 

INSERT INTO dbo.aaa (column_a)VALUES (7) ; 
GO 

ALTER TABLE dbo.aaa ADD CONSTRAINT DF_col_b DEFAULT [dbo].[True] FOR column_b ; 
GO 

INSERT INTO dbo.aaa (column_a) VALUES (10) ; 
GO 

SELECT * FROM dbo.aaa ; 
GO 

DROP TABLE dbo.aaa ; 
GO 

この文脈では許可される。有効な式は定数、定数 の式、および(一部のコンテキストでは)変数です。列名は ではありません。

+0

ようこそ:あなたは、コード、XMLまたはデータサンプルを投稿する場合は、** **テキストエディタでそれらの行をハイライト表示し、「コードサンプル」ボタンをクリックしてください( ' {} ')をエディタのツールバーに表示して、書式を整えて構文をハイライト表示します。 –

+1

エラーが表示されますか?その場合:**ここで**(サンプルコードのどの行に) - **正確に**はエラーですか? –

+0

あなたのコードがあなたの質問に私のために生成したエラーを追加しましたが、もしあなたがそれを行うならば、何らかの理由で別のエラーが発生した場合には、 –

答えて

1

あなたは「1」をデフォルトにあなたのコラムをしたい場合は、なぜあなたはこれを試してみません:

ALTER TABLE dbo.aaa ADD CONSTRAINT DF_col_b DEFAULT '1' FOR column_b ; 

あなたのデフォルトがTrueと呼ばれています。唯一の可能性がTrueまたはFalseの場合、おそらく型をchar(1)からbitに変更する必要があります。およびALTER文はなる:StackOverflowのに

ALTER TABLE dbo.aaa ADD CONSTRAINT DF_col_b DEFAULT 1 FOR column_b ; 
0

事前定義されたデフォルトをバインディングする構文はありません。あなたはstored procedureを使用する必要があります。

sp_bindefault 'True', 'dbo.aaa.column_b' 
+0

そのspは非推奨です... –

+0

@SirCrispalotこれはデフォルトを作成します。 –

+0

はい正しい私はこれが削除されることを文書で見た。しかし、代替は何ですか?私はユーザー定義型を作成し、そこに既定値を配置する場合、それはまた、既定の作成を使用しますか? –

関連する問題