2013-08-09 5 views
9

SQL Server에서 ALTER TABLE을 사용하여 기본 제약 조건을 추가하려고하는데 아래 오류 메시지가 대신 표시됩니다.기존 제약 조건을 제약 조건을 기존 테이블에 추가 할 때 '기본 제약 조건을 만들 수 없습니다'오류가 발생했습니다.

기본 제약 조건을 만들려면 '등록'테이블의 'StartDate'열을 사용할 수 없습니다. .

나는 테이블을 만들 때이 제약 조건을 선언 할 수 있다는 것을 알고 있지만, 나는에 나는 누군가가 나를 도울 수 있기를 바랍니다 상황이 아니다) 여기

alter 성명 :

ALTER TABLE [dbo].[Register] 
    ADD CONSTRAINT [Register_StartDate] DEFAULT (GETDATE()) FOR StartDate 

그리고 이것은 내 생성 테이블 스크립트입니다

CREATE TABLE [dbo].[Register] 
    (
    [ID]  [INT] IDENTITY(1, 1) NOT NULL, 
    /* ....*/ 
    [StartDate] [DATETIME] NULL 
) 

편집 : 고정 : 나는 포기 [StartDate] 필드가 테이블에 존재하지 않는다. 내 잘못이야!

+0

나를 위해 잘 작동합니다. –

+1

재생할 수 없습니다 - 다른 일이 있어야합니다. (a) 올바른 데이터베이스에 있는지, (b) 'Register' 테이블이 실제로 이렇게 생성되었는지, (c)'StartDate '가 실제로 해당 테이블에서'DATETIME '인지? –

+0

열을 생성하는 동안 기본 제약 조건을 추가하려고 시도 했습니까? 그게 효과가 있니? – Nilesh

답변

9

내가 아는 한이 오류가 발생할 수있는 두 가지 상황이 있습니다.

  1. 계산 된 열 :에 기본 제약 조건을 추가하려고

    .

  2. 전혀 존재하지 않는 컬럼! 테이블 정의 다음 설명 중

    CREATE TABLE dbo.Register 
        (
        ID INT IDENTITY(1, 1) NOT NULL, 
        Computed AS 'Foo' 
    ) 
    

    모두

는이에 기본 제약 조건을 추가 허용되지 않은 various other conditions있다 1752

ALTER TABLE dbo.Register 
    ADD CONSTRAINT C1 DEFAULT 'X' FOR Computed 

ALTER TABLE [dbo].[Register] 
    ADD CONSTRAINT [Register_StartDate] DEFAULT (GETDATE()) FOR StartDate 

오류와 함께 실패 열에는 고유 한 오류 번호와 메시지가 있습니다.

+------------------------------------+--------------+ 
|    Reason    | Error number | 
+------------------------------------+--------------+ 
| Column is IDENTITY     |   1754 | 
| Column is timestamp/rowversion  |   1755 | 
| Sparse Column      |   1791 | 
| Default constraint already present |   1781 | 
+------------------------------------+--------------+ 
관련 문제