테이블 복합 기본 키를 변경하는 방법
-
20-09-2019 - |
문제
CREATE TABLE [dbo].[INVS_ITEM_LOCATIONS]
([DEPARTMENT_CODE] [varchar](3) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL,
[IM_INV_NO] [numeric](10, 0) NOT NULL,
[LOCATION_CODE] [varchar](2) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL,
[CURR_QTY] [numeric](10, 0) NOT NULL CONSTRAINT [DF__INVS_ITEM__CURR___1352D76D] DEFAULT ((0)),
[DO_QTY] [numeric](10, 0) NOT NULL CONSTRAINT [DF__INVS_ITEM__DO_QT__1446FBA6] DEFAULT ((0)),
[ALLOC_QTY] [numeric](10, 0) NOT NULL CONSTRAINT [DF__INVS_ITEM__ALLOC__153B1FDF] DEFAULT ((0)),
[YOB_QTY] [numeric](10, 0) NOT NULL CONSTRAINT [DF__INVS_ITEM__YOB_Q__162F4418] DEFAULT ((0)),
[FOC_QTY] [numeric](10, 0) NULL CONSTRAINT [DF__INVS_ITEM__FOC_Q__17236851] DEFAULT ((0)),
[USER_CREATED] [varchar](25) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL,
[DATE_CREATED] [datetime] NOT NULL,
[USER_MODIFIED] [varchar](25) COLLATE SQL_Latin1_General_CP1_CI_AS NULL,
[DATE_MODIFIED] [datetime] NULL,
CONSTRAINT [INVS_ITEM_LOCATIONS_PK]
PRIMARY KEY CLUSTERED ([DEPARTMENT_CODE] ASC,
[IM_INV_NO] ASC, [LOCATION_CODE] ASC)
WITH (IGNORE_DUP_KEY = OFF) ON [PRIMARY]
) ON [PRIMARY]
이것은 내 테이블 구조입니다 ... 어떻게 테이블에서 복합 기본 키를 제거 할 수 있습니까? 또한 IM_INV_NO 참조 테이블에 외래 키를 추가해야합니다.
해결책
복합 기본 키를 제거하려면 다음을 사용합니다.
ALTER TABLE dbo.INVS_ITEM_LOCATIONS
DROP CONSTRAINT INVS_ITEM_LOCATIONS_PK
외국 키를 추가하려면 다음을 사용하십시오.
ALTER TABLE dbo.INVS_ITEM_LOCATIONS
ADD CONSTRAINT FK_INV_NO_REFERENCE
FOREIGN KEY(IM_INV_NO, DEPARTMENT_CODE)
REFERENCES dbo.invs_location(IM_INV_NO, DEPARTMENT_CODE)
이것들은 모두입니다 정말 기본 초보자 SQL 질문 - 나는 할 것이다 강하게 여기에 각각의 작은 질문을 게시하기 전에 SQL에 익숙해지기 위해 다양한 좋은 SQL 튜토리얼 중 하나를 읽는 것이 좋습니다 ....
마크
다른 팁
필요한 수정으로 새 테이블을 만들고 데이터를 복사 한 다음 오래된 테이블과 동일한 이름으로 New Talbes를 바꾸고 오래된 테이블을 삭제할 수 있습니다. 아마도 가장 효율적인 방법 일 것입니다.
제휴하지 않습니다 StackOverflow