[sql-server] 기존 열의 기본값을 설정하는 방법

이것은 SQL Server 2008에서 작동하지 않습니다.

ALTER TABLE Employee ALTER COLUMN CityBorn SET DEFAULT 'SANDNES'

오류는 다음과 같습니다

키워드 ‘SET’근처의 구문이 잘못되었습니다.

내가 무엇을 잘못하고 있지?



답변

이것은 SQL Server에서 작동합니다.

ALTER TABLE Employee ADD CONSTRAINT DF_SomeName DEFAULT N'SANDNES' FOR CityBorn;


답변

ALTER TABLE Employee ADD DEFAULT 'SANDNES' FOR CityBorn


답변

그것에 대해 alter column을 사용할 수 없으므로 대신 add를 사용하십시오.

ALTER TABLE Employee
ADD DEFAULT('SANDNES') FOR CityBorn


답변

이를 수행하는 올바른 방법은 다음과 같습니다.

  1. 다음 명령을 실행하십시오 :

    sp_help [table name] 
  2. 의 이름을 복사하십시오 CONSTRAINT.

  3. 드롭 DEFAULT CONSTRAINT:

    ALTER TABLE [table name] DROP [NAME OF CONSTRAINT] 
  4. 아래 명령을 실행하십시오.

    ALTER TABLE [table name] ADD DEFAULT [DEFAULT VALUE] FOR [NAME OF COLUMN]

답변

Hoodaticus의 솔루션은 완벽했습니다. 감사합니다. 그러나 다시 실행할 수 있어야하고 완료되었는지 확인하기 위해이 방법을 찾았습니다 …

IF EXISTS(SELECT * FROM information_schema.columns
           WHERE table_name='myTable' AND column_name='myColumn'
             AND Table_schema='myDBO' AND column_default IS NULL)
BEGIN
  ALTER TABLE [myDBO].[myTable] ADD DEFAULT 0 FOR [myColumn] --Hoodaticus
END


답변

열의 기본값을 변경할 수있는 두 가지 시나리오가 있습니다.

  1. 테이블 작성시
  2. 기존 테이블의 기존 열을 수정하십시오.

  1. 테이블을 만들거나 새 열을 만들 때.

질문

create table table_name
(
    column_name datatype default 'any default value'
);
  1. 기존 테이블의 기존 열 수정

이 경우 내 SQL 서버는 기존 기본 제약 조건 값을 수정할 수 없습니다. 따라서 기본값을 변경하려면 기존 시스템 생성 또는 사용자 생성 기본 제약 조건을 삭제해야합니다. 그런 다음 특정 열에 대해 기본값을 설정할 수 있습니다.

몇 가지 단계를 수행하십시오.

  1. 열에 대한 모든 기존 기본값 제한 조건을 나열하십시오.

이 시스템 데이터베이스 프로 시저를 실행하면 테이블 이름이 매개 변수로 사용됩니다. 테이블 내의 모든 열에 대한 모든 제약 조건의 목록을 반환합니다.

execute [dbo].[sp_helpconstraint] 'table_name'
  1. 열에 대한 기존 기본 제한 조건을 삭제하십시오.

통사론:

alter table 'table_name' drop constraint 'constraint_name'
  1. 해당 열에 새로운 기본값 제약 조건을 추가하십시오.

통사론:

alter table 'table_name' add default 'default_value' for 'column_name'

건배 @ !!!


답변

기본 이름으로 제한이 이미 존재하는 경우 :

-- Drop existing default constraint on Employee.CityBorn
DECLARE @default_name varchar(256);
SELECT @default_name = [name] FROM sys.default_constraints WHERE parent_object_id=OBJECT_ID('Employee') AND COL_NAME(parent_object_id, parent_column_id)='CityBorn';
EXEC('ALTER TABLE Employee DROP CONSTRAINT ' + @default_name);

-- Add default constraint on Employee.CityBorn
ALTER TABLE Employee ADD CONSTRAINT df_employee_1 DEFAULT 'SANDNES' FOR CityBorn;