2015-01-13 3 views
1

다음 SQL을 사용하여 테이블을 만들지 만 첫 번째 제약 조건의 "DEFAULT"는 다음과 같은 오류 메시지를 표시합니다. "기본 제약 조건은 CREATE 또는 ALTER TABLE의 열 수준에서만 존재할 수 있습니다 성명서."기본 제약 조건 오류가 발생했습니다

저는 인터넷 리서치를 통해이 문제를 조사해 본 적이 없지만 아직 오류를 해결하는 데 도움이되지 않았거나 실제로 나에게 설명해주었습니다.

CREATE TABLE [RuleEngine].[NCCIImportHistory](
       [NCCIImportHistoryID] [int] IDENTITY(1,1) NOT NULL, 
       [StartTime] [datetimeoffset](7) NOT NULL, 
       [EndTime] [datetimeoffset](7) NOT NULL, 
       [CreatedOn] [datetimeoffset](7) NOT NULL, 
       [CreatedBy_UserID] [int] NOT NULL, 
CONSTRAINT [DF_NCCIImportHistory_CreatedOn] DEFAULT (getutcdate()) FOR [CreatedOn], 
CONSTRAINT [FK_NCCIImportHistory_User_CreatedBy] FOREIGN KEY([CreatedBy_UserID]) REFERENCES [Security].[User] ([UserID]), 
CONSTRAINT [PK_NCCIImportHistoryID] PRIMARY KEY CLUSTERED ([NCCIImportHistoryID] ASC) 
    WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON, FILLFACTOR = 90) ON [PRIMARY]) ON [PRIMARY] 
+0

같은 테이블 다음 제약 조건을 만들 시도 dbms를 지정하십시오. (이것은 ANSI/ISO SQL처럼 보이지 않습니다 ...) BTW, 열 이름 데이터 유형 DEFAULT 값과 같은 것을 수행합니다. – jarlh

+0

죄송합니다. 그것은 미시시피 SQL 서버 – AtlasBowler

답변

2

사용중인 데이터베이스를 지정하지 않았지만 구문에 따라 MS SQL Server라고 생각합니다. 그래서 당신은 이런 식으로 대신 열 정의의 일부로 인라인 제약 조건을 추가 할 수 있습니다 :

[CreatedOn] [datetimeoffset](7) NOT NULL CONSTRAINT [DF_NCCIImportHistory_CreatedOn] DEFAULT (getutcdate()), 
+1

고마워! 그게 효과가 있었어! StackOverflow가 나를 허락하는대로 당신의 대답을 받아 들일 것입니다. – AtlasBowler

0

CREATE TABLE [RuleEngine].[NCCIImportHistory] 
    (
     [NCCIImportHistoryID] [INT] IDENTITY(1, 1) 
            NOT NULL , 
     [StartTime] [DATETIMEOFFSET](7) NOT NULL , 
     [EndTime] [DATETIMEOFFSET](7) NOT NULL , 
     [CreatedOn] [DATETIMEOFFSET](7) NOT NULL CONSTRAINT [DF_NCCIImportHistory_CreatedOn] DEFAULT (GETUTCDATE()), 
     [CreatedBy_UserID] [INT] NOT NULL , 
     CONSTRAINT [FK_NCCIImportHistory_User_CreatedBy] FOREIGN KEY ([CreatedBy_UserID]) REFERENCES [Security].[User] ([UserID]) , 
     CONSTRAINT [PK_NCCIImportHistoryID] PRIMARY KEY CLUSTERED 
     ([NCCIImportHistoryID] ASC) 

     WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, 
       IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, 
       ALLOW_PAGE_LOCKS = ON, FILLFACTOR = 90) ON [PRIMARY] 
    ) 
ON [PRIMARY] 

또는 첫 번째는이

CREATE TABLE [RuleEngine].[NCCIImportHistory] 
    (
     [NCCIImportHistoryID] [INT] IDENTITY(1, 1) NOT NULL , 
     [StartTime] [DATETIMEOFFSET](7) NOT NULL , 
     [EndTime] [DATETIMEOFFSET](7) NOT NULL , 
     [CreatedOn] [DATETIMEOFFSET](7) NOT NULL, 
     [CreatedBy_UserID] [INT] NOT NULL 
    ) 
ON [PRIMARY] 
GO 


ALTER TABLE [RuleEngine].[NCCIImportHistory] ADD CONSTRAINT [DF_NCCIImportHistory_CreatedOn] DEFAULT(GETUTCDATE()) FOR [CreatedOn] 
GO 

ALTER TABLE [RuleEngine].[NCCIImportHistory] ADD CONSTRAINT [FK_NCCIImportHistory_User_CreatedBy] FOREIGN KEY ([CreatedBy_UserID]) REFERENCES [Security].[User] ([UserID]) 
GO 

ALTER TABLE [RuleEngine].[NCCIImportHistory] ADD CONSTRAINT [PK_NCCIImportHistoryID] PRIMARY KEY CLUSTERED([NCCIImportHistoryID] ASC) WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, 
       IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, 
       ALLOW_PAGE_LOCKS = ON, FILLFACTOR = 90) ON [PRIMARY] 
GO 
+0

원래 나는 ALTERs를 가지고 있었지만 내 스승은 그들을 데리고 나가서 그걸 내가 왜 그 질문에 게시했는지 설명했다. 그래도 고마워! – AtlasBowler

관련 문제