2011-10-26 4 views
1

나는 가능하면 내가처럼 제약 조건을 추가하려고하면 CREATE TABLE 문에서 ANSI SQL에서 TABLE 문을 이름 열 기본을 만들기

에,은 ANSI 규격 방식으로 명명 된 기본값을 만들려면 일반적으로 ALTER TABLE 문에 쓰십시오. SQL Server에서 적어도 실패합니다. 그러나 다양한 Ado.NET DbConnection에서 작동하도록 ANSI 불만 성명서를 찾고 싶습니다.)

예 :

CREATE TABLE [dbo].[MyExample] 
(
Id int NOT NULL IDENTITY (1, 1), 
Name varchar(512) NOT NULL,   
IsActive bit NOT NULL, 
CONSTRAINT PK_MyExample PRIMARY KEY CLUSTERED (Id), 
CONSTRAINT DF_MyExample_IsActive DEFAULT (1) FOR [IsActive] 
) 

오류 :이 ANSI 규격

Incorrect syntax near 'for'.

답변

4

DEFAULT에 이름을 부여 할 수있는 제약되지 않습니다 . SQL-92에서 DEFAULT은 열 정의로 인라인으로 만 정의 할 수 있으며 데이터 유형과 NOT NULL (사용되는 경우) 사이에 있어야합니다. 인용 식별자로

  • 대괄호 (따옴표해야한다)
  • 비 호환 데이터 유형 (예 : 잘못된 bit 널 (null) :

    CREATE TABLE T (c INTEGER DEFAULT 1 NOT NULL UNIQUE); 
    

    주 당신은 당신의 작은 예에 많은 비 표준 구문이 행동)

  • 축약 된 데이터 유형 (예 : int보다는 INTEGER)
  • IDENTITY 확인 만약 내가 그렇게 희망
  • CLUSTERED
+0

감사합니다. 훨씬 좋습니다. Mimer 유효성 검사기 링크에 감사드립니다. 최근에 SQL Server가 너무 많아서 브러시를 사용해야합니다 :) – johnc

0

아닌가? 그런데, 모두 ISO (I = 국제) 및 ANSI (A + 미국)입니다 - -는 SQL-92 표준의 관점에서

CREATE TABLE [dbo].[MyExample] 
(
    Id int NOT NULL IDENTITY (1, 1), 
    Name varchar(512) NOT NULL,   
    IsActive bit NOT NULL CONSTRAINT DF_MyExample_IsActive DEFAULT (1), 
    CONSTRAINT PK_MyExample PRIMARY KEY CLUSTERED (Id) 
) 
+0

는 내가 대답 – johnc

+4

@johnc로 표시됩니다 : 그것은 ISO/IEC/ANSI SQL-92 호환되지 않습니다. 예를 들어 확인할 수 있습니다. [Mimer SQL-92 Validator] (http://developer.mimer.com/validator/parser92/index.tml)를 사용하십시오. – onedaywhen