DBMS/SQL Server (MS-SQL)

[SQL Server / MS-SQL] Msg 5074, The object 'Constraint Name' is dependent on column 'Column Name'. Msg 4922, ALTER TABLE ALTER COLUMN 'Column Name' failed because one or more objects access this column.

RYEAN 2020. 7. 16. 14:01
반응형


 

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] [intNOT 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
ALTER TABLE [dbo].[TBL_GOODS] ALTER COLUMN [CNT] bigint NOT NULL
cs

 

 

위 명령문을 통해 데이터타입을 변경하려 하니 아래와 같은 오류가 발생하였다.

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 제약조건 생성

 

 

반응형