2012-02-10 49 views
4

我有一个主键,我想添加另一列的表。问题是,当我添加它时,Sql Server将所有外键引用都删除到该表。添加到主键而不删除外键引用

有什么办法解决这个问题吗? (或者甚至可能是重构这个的工具)?

+1

你是否在改变主键字段?这听起来不对。 – JohnFx 2012-02-10 19:36:47

+0

听起来像@firebird正在尝试创建一个复合pkey。例如。已经有一个pkey,但需要将另一列添加到pkey中,以使其复合或将另一列添加到复合键。 – 2012-02-10 20:51:49

回答

5

没有什么可以“修复” - 你正在改变PK,所以FK需要被丢弃。

如果向PK添加一个字段,您认为应该发生什么?所有FK引用都会添加该字段?如果这个额外的字段不存在于其他表中?他们必须被删除,然后重新创建,以确保他们甚至是有效的引用。

0

没有办法解决它。外键将不得不重新定义。例如,如果你为PK添加一列,所有现有的FK将需要重新定义,以引用组成PK的新的一组列。这意味着您必须将列添加到子表中。

我不确定是否有任何工具可以自动执行此过程。