相关疑难解决方法(0)

SQL Server 如何为外键引用选择索引键?

我正在使用从 MS Access 导入的旧数据库。在 MS Access > SQL Server 升级过程中创建了大约 20 个带有非集群唯一主键的表。

其中许多表还具有唯一的非聚集索引,它们是主键的副本。

我正在尝试清理它。

但是我发现在我将主键重新创建为聚集索引,然后尝试重建外键后,外键引用了旧的重复索引(这是唯一的)。

我知道这一点,因为它不会让我删除重复的索引。

我认为 SQL Server 会始终选择一个主键,如果存在的话。SQL Server 是否有在唯一索引和主键之间进行选择的方法?

要复制问题(在 SQL Server 2008 R2 上):

IF EXISTS (SELECT * FROM sys.tables WHERE name = 'Child') DROP TABLE Child
GO
IF EXISTS (SELECT * FROM sys.tables WHERE name = 'Parent') DROP TABLE Parent
GO

-- Create the parent table
CREATE TABLE Parent (ParentID INT NOT NULL IDENTITY(1,1)) 

-- Make the parent table a heap
ALTER TABLE Parent ADD …
Run Code Online (Sandbox Code Playgroud)

index sql-server primary-key sql-server-2008-r2

9
推荐指数
1
解决办法
2712
查看次数