2009-08-31 79 views
0
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参考表是invs_location包含im_inv_no并且department_code应该是相同的主键.pls帮助如何更改表的复合主键

+0

请尝试像“SQL服务器2005”的有用和相关的标签添加到您的下一个问题的时候了。它可以让人们更好地了解您正在使用的内容以及如何向您寻求帮助! – 2009-08-31 13:08:57

+0

你打算把一些主键放在桌子上,对吧?如果组合键中的文件是独一无二的,那么当您至少删除主键时,您应该在其上放置一个唯一索引,否则将来会出现数据完整性问题。 – HLGEM 2009-11-11 14:07:44

回答

4

要删除您的复合主键,使用方法:

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,然后再发布每个小问题......

W3Schools SQL Tutorial

马克

+0

好的,谢谢你的工作 – Domnic 2009-08-31 13:00:47

+2

好的,然后做正确的事,接受答案!成为一名好的SO公民,在未来获得答案! – 2009-08-31 13:05:49

1

您可以根据需要进行修改来创建新表,然后复制数据,然后将新的talbs重命名为与旧表相同的名称并删除旧表。这也许是最有效的方法。

+1

使用ALTER TABLE命令是最有效的方法。但是,如果您正在制作生产数据库,则使用“创建复制和重命名”方法将是破坏性最小的方法(即锁定/停机时间)。 – 2009-08-31 14:14:43