답변:
구속 조건의 이름을 인라인으로 지정할 수 있습니다.
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
명령문 으로 수행하는 것 입니다.
다른 두 가지 답변에 대한 귀하의 의견은 "인라인"을 만들 때 기본 제약 조건의 이름을 지정할 수 없다고 주장합니다. 두 답변 모두 실제로 인라인을 만들 때 제약 조건의 이름을 제공 할 수 있음을 보여줍니다. 결과를 보여주는 세 번째 예를 추가하겠습니다.
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 문서를 살펴볼 수 있습니다 . 매우 기본적인 구문 오류가 있습니다.