CREATE TABLE [ab_table](
[CD_COMPANY] [nvarchar](7) NOT NULL,
[DTC] [char](1) NOT NULL CONSTRAINT [DF__FI_ACGRP__TP_DRC__2C42AB45] DEFAULT ('1')
.
.
.
.)
이런식으로 되어있는데요
[DTC] [char](1) NOT NULL CONSTRAINT [TP_DRC__2C42AB45] DEFAULT ('1')
이 부분의 의미를 알고 싶습니다.
테이블 제약 조건에 있는 저쪽을 내부를 들어가보면
ALTER TABLE [ab_table] ADD CONSTRAINT [TP_DRC__2C42AB45] DEFAULT ('1') FOR [DTC]
이렇게 되어있는데 좀 설명좀 부탁드립니다.
하수는 서글퍼 지네요...
대충 보면 null일시에 [DTC]에 기본값으로 '1'을 넣어주는거 같기는 한데..
정확히를 몰라서요...
Comment 5
-
이리
2016.02.26 15:41
-
Terry
2016.02.26 15:41
[DTC] [char](1) NOT NULL CONSTRAINT [TP_DRC__2C42AB45] DEFAULT ('1')
NULL 을 허용하지 않는 컬럼으로, 제약조건 [TP_DRC__2C42AB45] 이 들어가있으며
ROW 생성시 ( 신규 ROW 생성=INSERT ) 기본값으로 '1' 을 넣어준다는 의미입니다.
ALTER TABLE [ab_table] ADD CONSTRAINT [TP_DRC__2C42AB45] DEFAULT ('1') FOR [DTC]
SSMS에서 테이블구조 확인시 상기 구문이 보이신거면
최초 테이블 생성시에는 없는 제약조건이었고
운영중 필요에 의해 추가된 제약조건으로 보여지네요~
그럼 수고하세요~
-
아싸라비아콜롬비아
2016.02.26 15:57
CREATE TABLE [ab_table](
[CD_COMPANY] [nvarchar](7) NOT NULL,[DTC] [char](1) NOT NULL CONSTRAINT [DF__FI_ACGRP__TP_DRC__2C42AB45] DEFAULT ('1')
.
.
.
.)
[DTC] [char](1) NOT NULL DEFAULT ('1')
이거랑은 어떤 차이인거죠.... 저게 제약조건이긴 한데....
어짜피 같은말아닌가요???
not null조건이 들어가 있으니까
테이블 alter할때는 당연히 null이 안되는거 아닌가요???
아니면 업데이트시에 null이면 default로 '1' 강제로 다시 넣어주는
한번도 확인한다는 차원인가요???
-
Terry
2016.02.26 16:54
Alter 시에는 null 도 가능합니다.
단 컬럼이 제약조건인 경우에는 null 허용이 안되니
not null 이 되겠지요.
정리합니다.
제약조건이 아닌 컬럼의 추가는 NULL 도 가능합니다.
-
항해자™
2016.02.26 17:31
create table 구문에 있는 것은 테이블이 생성된 시점부터 모두 제약조건을 타는 것 이구요,,,
alter table 구문을 사용하면서 not null을 명시하려면 default를 넣지 않으면 오류가 발생할 수 있습니다,,,
CHAR(1) -- 문자 1바이트
NOT NULL -- NULL 허용 안함
CONSTRAINT[TP_DRP__2C42AB45] -- 제약조건
DEFAULT('1') -- 값이 없으면 기본 값 '1' 입력
https://msdn.microsoft.com/ko-kr/library/ms174979(v=sql.120).aspx