기존 열의 기본값을 설정하는 방법
이것은 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;
ALTER TABLE [dbo].[Employee] ADD DEFAULT ('N') FOR [CityBorn]
이전에 null 인 기존 열을 변경하는 3 가지 간단한 단계를 찾았습니다.
update orders
set BasicHours=0 where BasicHours is null
alter table orders
add default(0) for BasicHours
alter table orders
alter column CleanBasicHours decimal(7,2) not null
첫 번째 드롭 제약
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
다음 구문을 사용할 수 있습니다. 자세한 내용은이 질문과 답변을 참조하십시오 . 기본값이있는 열을 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과 같습니다.
참고 URL : https://stackoverflow.com/questions/6791675/how-to-set-a-default-value-for-an-existing-column
'Programing' 카테고리의 다른 글
왜 머그 소트보다 퀵 소트가 더 낫습니까? (0) | 2020.03.02 |
---|---|
파이썬에서 목록을 비우는 방법? (0) | 2020.03.02 |
Java의 클래스 경로에서 텍스트 파일을 실제로 읽는 방법 (0) | 2020.03.02 |
SQL Server 2005/2008에서 요일 가져 오기 (0) | 2020.03.02 |
FROM 절에서 업데이트 대상 테이블을 지정할 수 없습니다 (0) | 2020.03.02 |