이것은 SQL Server 2008에서 작동하지 않습니다.
ALTER TABLE Employee ALTER COLUMN CityBorn SET DEFAULT 'SANDNES'
오류는 다음과 같습니다
키워드 'SET'근처의 구문이 잘못되었습니다.
내가 무엇을 잘못하고 있지?
이것은 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
이를 수행하는 올바른 방법은 다음과 같습니다.
다음 명령을 실행하십시오 :
sp_help [table name]
의 이름을 복사하십시오 CONSTRAINT
.
드롭 DEFAULT CONSTRAINT
:
ALTER TABLE [table name] DROP [NAME OF CONSTRAINT]
아래 명령을 실행하십시오.
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
열의 기본값을 변경할 수있는 두 가지 시나리오가 있습니다.
질문
create table table_name
(
column_name datatype default 'any default value'
);
이 경우 내 SQL 서버는 기존 기본 제약 조건 값을 수정할 수 없습니다. 따라서 기본값을 변경하려면 기존 시스템 생성 또는 사용자 생성 기본 제약 조건을 삭제해야합니다. 그런 다음 특정 열에 대해 기본값을 설정할 수 있습니다.
몇 가지 단계를 수행하십시오.
이 시스템 데이터베이스 프로 시저를 실행하면 테이블 이름이 매개 변수로 사용됩니다. 테이블 내의 모든 열에 대한 모든 제약 조건의 목록을 반환합니다.
execute [dbo].[sp_helpconstraint] 'table_name'
통사론:
alter table 'table_name' drop constraint 'constraint_name'
통사론:
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;
다음 구문을 사용할 수 있습니다. 자세한 내용은이 질문과 답변을 참조하십시오 . 기본값이있는 열을 SQL Server의 기존 테이블에 추가
구문 :
ALTER TABLE {TABLENAME}
ADD {COLUMNNAME} {TYPE} {NULL|NOT NULL}
CONSTRAINT {CONSTRAINT_NAME} DEFAULT {DEFAULT_VALUE}
WITH VALUES
예 :
ALTER TABLE SomeTable
ADD SomeCol Bit NULL --Or NOT NULL.
CONSTRAINT D_SomeTable_SomeCol --When Omitted a Default-Constraint Name is
autogenerated.
DEFAULT (0)--Optional Default-Constraint.
WITH VALUES --Add if Column is Nullable and you want the Default Value for Existing Records.
또 다른 방법 :
테이블을 마우스 오른쪽 버튼으로 클릭하고 디자인을 클릭 한 다음 기본값을 설정하려는 열을 클릭하십시오.
그런 다음 페이지 하단에 기본값 또는 바인딩을 추가하십시오 : 문자열의 경우 '1'또는 int의 경우 1과 같습니다.
첫 번째 드롭 구속 조건
https://stackoverflow.com/a/49393045/2547164
DECLARE @ConstraintName nvarchar(200)
SELECT @ConstraintName = Name FROM SYS.DEFAULT_CONSTRAINTS
WHERE PARENT_OBJECT_ID = OBJECT_ID('__TableName__')
AND PARENT_COLUMN_ID = (SELECT column_id FROM sys.columns
WHERE NAME = N'__ColumnName__'
AND object_id = OBJECT_ID(N'__TableName__'))
IF @ConstraintName IS NOT NULL
EXEC('ALTER TABLE __TableName__ DROP CONSTRAINT ' + @ConstraintName)
두 번째 기본값 작성
ALTER TABLE [table name] ADD DEFAULT [default value] FOR [column name]
다음 명령을 시도하십시오.
ALTER TABLE Person11
ADD CONSTRAINT col_1_def
DEFAULT 'This is not NULL' FOR Address
Yuck의 대답처럼 스크립트를 오류없이 두 번 이상 실행할 수 있습니다. (info_schema.columns를 사용하는 것보다 코드 / 사용자 지정 문자열이 적음)
IF object_id('DF_SomeName', 'D') IS NULL BEGIN
Print 'Creating Constraint DF_SomeName'
ALTER TABLE Employee ADD CONSTRAINT DF_SomeName DEFAULT N'SANDNES' FOR CityBorn;
END