回答:
インラインで制約に名前を付けることができます。
CREATE TABLE tblTest(
--
--
Gender int CONSTRAINT DF_tblTest_Gender DEFAULT 3,
--
) ;
CREATE TABLE
MSDNのページショー:
DEFAULT
...以前のバージョンのSQL Serverとの互換性を維持するために、制約名をに割り当てることができます
DEFAULT
。
同じページでは、我々はのための唯一のオプションがあることを見つけることができ<table_constraint>
ますPRIMARY KEY
、FOREIGN KEY
そしてCHECK
制約:
< table_constraint > ::= [ CONSTRAINT constraint_name ] { { PRIMARY KEY | UNIQUE } { NONCLUSTERED (column [ ASC | DESC ] [ ,... n ]) | NONCLUSTERED HASH (column [ ,... n ] ) WITH ( BUCKET_COUNT = bucket_count ) } | FOREIGN KEY ( column [ ,...n ] ) REFERENCES referenced_table_name [ ( ref_column [ ,...n ] ) ] | CHECK ( logical_expression ) }
したがって、デフォルトの制約を追加したい場合は(名前を付けるかどうかにかかわらず)、インラインまたはALTER TABLE
ステートメントを使用する方法しかありません。
他の2つの回答に対するコメントでは、デフォルトの制約を「インライン」で作成するときに名前を付けることはできません。どちらの回答も、インラインで作成するときに実際に制約の名前を指定できることを示しています。結果を示す3番目の例を追加します。
IF OBJECT_ID('dbo.Test') IS NOT NULL
DROP TABLE dbo.Test;
CREATE TABLE dbo.Test
(
TestID int NOT NULL
CONSTRAINT PK_Test --here I'm naming the primary key constraint!
PRIMARY KEY CLUSTERED
IDENTITY(1,1)
, SomeData varchar(42) NOT NULL
CONSTRAINT DF_Test_SomeData --this is the name of the default constraint!
DEFAULT ('Carrie Fisher')
);
INSERT INTO dbo.Test DEFAULT VALUES;
これは、デフォルトの制約の名前が次のとおりであることを示していますDF_Test_SomeData
。
SELECT TableName = t.name
, ConstraintName = dc.name
FROM sys.default_constraints dc
INNER JOIN sys.tables t ON dc.parent_object_id = t.object_id;
結果:
SSMSでオブジェクトエクスプローラーを見ると、名前が示されています。
default value
フィールド定義に使用できます。
Create tblTest(
columns..
..
..
Gender int CONSTRAINT constraint_name DEFAULT 3,
..
..
..
)
または、ALTER TABLEを使用します。
ALTER TABLE tblTest
ADD CONSTRAINT constraint_name
DEFAULT 3
FOR Gender
CREATE TABLE ...
ステートメントについては、Microsoft SQL Serverの公式ドキュメントをご覧ください。非常に基本的な構文エラーがあります。