반응형
1. 오류 발생
1
2
3
4
|
Msg 5074, Level 16, State 1, Line 5
The object 'DF_TBL_GOODS_CNT' is dependent on column 'CNT'.
Msg 4922, Level 16, State 9, Line 5
ALTER TABLE ALTER COLUMN CNT failed because one or more objects access this column.
|
cs |
1
2
3
4
|
메시지 5074, 수준 16, 상태 1, 줄 5
'DF_TBL_GOODS_CNT'개체는 'CNT'열에 종속됩니다.
메시지 4922, 수준 16, 상태 9, 줄 5
ALTER TABLE ALTER COLUMN CNT가 하나 이상의 개체가 이 열에 액세스하므로 실패했습니다.
|
cs |
2. 오류 원인
이 오류는 'ALTER TABLE ALTER COLUMN' 을 수행하여 컬럼의 데이터타입을 변경하려 할 때,
해당 컬럼이 PRIMARY KEY 또는 DEFAULT 제약조건이 걸려있을 경우 발생하는 오류이다.
1
2
3
4
5
6
7
8
|
CREATE TABLE [dbo].[TBL_GOODS] (
[PRODUCT] [varchar(30)] NOT NULL,
[CNT] [int] NOT NULL
)
GO
ALTER TABLE [dbo].[TBL_GOODS] ADD CONSTRAINT [DF_TBL_GOODS_CNT] DEFAULT (0) FOR [CNT]
GO
|
cs |
위 쿼리는 변경하려는 대상 테이블과 제약조건 상태이다.
TBL_GOODS 테이블에 PRODUCT, CNT 라는 컬럼이 있고 CNT 컬럼에 DEFAULT 0 이라는 제약조건이 걸려있다.
이 CNT 컬럼의 데이터타입 int → bigint 로 변경해보자.
위 명령문을 통해 데이터타입을 변경하려 하니 아래와 같은 오류가 발생하였다.
1
2
3
4
|
Msg 5074, Level 16, State 1, Line 5
The object 'DF_TBL_GOODS_CNT' is dependent on column 'CNT'.
Msg 4922, Level 16, State 9, Line 5
ALTER TABLE ALTER COLUMN CNT failed because one or more objects access this column.
|
cs |
3. 오류 해결
아래의 3단계를 거쳐 오류를 해결할 수 있다.
1. 제약조건 삭제
2. 데이터타입 변경
3. 제약조건 추가
1
2
3
4
5
6
|
--1. 제약조건 삭제
ALTER TABLE [dbo].[TBL_GOODS] DROP CONSTRAINT DF_TBL_GOODS_CNT
--2. 데이터타입 변경
ALTER TABLE [dbo].[TBL_GOODS] ALTER COLUMN [CNT] bigint NOT NULL
--3. 제약조건 추가
ALTER TABLE [dbo].[TBL_GOODS] ADD CONSTRAINT [DF_TBL_GOODS_CNT] DEFAULT (0) FOR [CNT]
|
cs |
※ 만일 FOREIGN KEY 관계로 다른 테이블을 참조하고 있다면 아래의 단계를 수행하여 오류를 해결할 수 있다.
1. 다른 테이블의 FK 제약조건 삭제
2. 대상 테이블의 PK 제약조건 삭제
3. 데이터타입 변경
4. 대상 테이블의 PK 제약조건 생성
5. 다른 테이블의 FK 제약조건 생성
반응형