다음을 통해 공유


열의 기본값 지정

적용 대상: SQL Server 2016(13.x) 이상 Azure SQL 데이터베이스Azure SQL Managed InstanceAzure Synapse AnalyticsAnalytics Platform System(PDW)

SQL Server Management Studio(SSMS)를 사용하여 테이블 열에 입력할 기본값을 지정할 수 있습니다. 개체 탐색기를 사용하거나 Transact-SQL을 실행하여 기본값을 설정할 수 있습니다.

열에 기본값을 할당하지 않고 사용자가 열을 비워 두면 다음이 수행됩니다.

  • Null 값을 허용하도록 옵션을 설정한 경우 NULL이 열에 삽입됩니다.

  • null 값을 허용하는 옵션을 설정하지 않으면 열은 비어 있지만 사용자 또는 애플리케이션은 열에 대한 값을 제공할 때까지 행을 삽입할 수 없습니다.

다양한 작업에 대한 기본 제약 조건을 사용하여 데이터베이스 수준 데이터 일관성을 보장할 수 있습니다.

  • "삽입할 때 '활성' 또는 '사용' 열의 행 값을 1으로 설정합니다."
  • 날짜 필드의 행 값을 현재 날짜로 설정합니다.
  • 필드의 행 값을 결정적 시스템 함수(예: DB_NAME())로 설정합니다.

제한 사항

시작하기 전에 다음 제한 사항을 유의하세요.

  • 기본값 필드의 항목이 괄호 없이 표시되는 바인딩된 기본값을 대체하는 경우 기본값을 바인딩 해제하고 새 기본값으로 바꾸라는 메시지가 표시됩니다.

  • 텍스트 문자열을 입력하려면 값을 작은따옴표(')로 묶습니다. 큰따옴표(")는 따옴표 붙은 식별자를 위해 예약되어 있으므로 사용하지 마세요.

  • 숫자 기본값을 입력하려면 앞뒤에 따옴표 없이 숫자를 입력합니다.

  • 개체/함수를 입력하려면 개체/함수의 이름을 따옴표 없이 입력합니다.

  • Azure Synapse Analytics에서는 기본 제약 조건에 상수만 사용할 수 있습니다. 기본 제약 조건과 함께 식을 사용할 수 없습니다.

사용 권한

이 문서에 설명된 작업에는 테이블에 대한 ALTER 권한이 필요합니다.

SQL Server Management Studio를 사용하여 기본값 지정

SSMS에서 개체 탐색기를 사용하여 테이블 열의 기본값을 지정할 수 있습니다. 이렇게 하려면 다음 단계를 따르십시오.

  1. SSMS에서 SQL Server 인스턴스에 연결합니다.

  2. 개체 탐색기에서 스케일링을 변경할 열이 포함된 테이블을 마우스 오른쪽 단추로 클릭하고 디자인을 선택합니다.

  3. 기본값을 지정할 열을 선택합니다.

  4. 열 속성 탭에서 기본값 또는 바인딩 속성에 새 기본값을 입력합니다.

    숫자 기본값을 입력하려면 숫자를 입력합니다. 개체 또는 함수의 경우 해당 이름을 입력합니다. 영숫자 기본값의 경우 작은따옴표 안에 값을 입력합니다.

  5. 파일 메뉴에서 <table name> 저장을 선택합니다.

Transact-SQL을 사용하여 기본값 지정

T-SQL을 사용하여 열의 기본값을 지정할 수 있는 다양한 방법이 있습니다. 다음 각 예제에서는 이러한 단계를 사용하여 새 Transact-SQL 쿼리를 열 수 있습니다.

  1. 개체 탐색기에서 데이터베이스 엔진인스턴스에 연결합니다.

  2. 표준 도구 모음에서 새 쿼리를 선택합니다.

  3. 예시를 복사하여 쿼리 창에 붙여넣고 실행을 선택합니다.

명명된 제약 조건 사용

데이터베이스 프로젝트를 사용할 때는 이름으로 제약 조건을 만드는 것이 좋습니다. 그렇지 않으면 기본 제약 조건에는 데이터베이스 개체가 만들어지는 각 SQL Server 환경에서 다른 시스템 생성 이름이 지정됩니다.

CREATE TABLE dbo.doc_exz (
    column_a INT,
    column_b INT CONSTRAINT DF_Doc_Exz_Column_B DEFAULT 50
);

ALTER TABLE 사용

ALTER TABLE사용하여 명명된 제약 조건을 기존 테이블에 추가할 수 있습니다.

CREATE TABLE dbo.doc_exz (
    column_a INT,
    column_b INT
); -- Allows nulls.
GO

INSERT INTO dbo.doc_exz (column_a)
VALUES (7);
GO

ALTER TABLE dbo.doc_exz
ADD CONSTRAINT DF_Doc_Exz_Column_B DEFAULT 50 FOR column_b;
GO

CREATE TABLE 사용

CREATE TABLE기본 제약 조건이 있는 새 테이블을 만들 수 있습니다.

CREATE TABLE dbo.doc_exz (
    column_a INT,
    column_b INT CONSTRAINT DF_Doc_Exz_Column_B DEFAULT 50
);

만든 날짜 설정

다음 예제에서는 sysdatetimeoffset() 시스템 함수를 사용하여 행을 만든 날짜로 dateinserted 열의 행 값을 채웁다.

CREATE TABLE dbo.test (
    id INT identity(1, 1) NOT NULL CONSTRAINT PK_test PRIMARY KEY
    ,date_inserted DATETIMEOFFSET(2) NOT NULL CONSTRAINT DF_test_date_inserted DEFAULT(sysdatetimeoffset())
);

행이 업데이트되면 기본 제약 조건이 변경되지 않습니다. 행이 수정될 때마다 값을 업데이트하려면 트리거, temporal 테이블, 계산 열, 또는 rowversion 이진 문자열을 사용하는 것을 고려하십시오. 저장 프로시저가 비즈니스 논리, 기본값 및 기타 데이터 일관성 규칙을 적용할 수 있으므로, 행을 직접 삽입하는 대신 저장 프로시저를 실행하여 행을 삽입하는 것도 고려해 보십시오.

변경되는 행을 검색하려면 CDC(변경 데이터 캡처), 변경 내용 추적, 임시 테이블또는 원장 테이블고려합니다.