Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sql-server-2005/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
更改Sql表(将外键更改为表的第二个主键)_Sql_Sql Server 2005_Alter Table - Fatal编程技术网

更改Sql表(将外键更改为表的第二个主键)

更改Sql表(将外键更改为表的第二个主键),sql,sql-server-2005,alter-table,Sql,Sql Server 2005,Alter Table,我有一个带有主键(自动递增)和外键的sql表。现在我需要通过将外键修改为第二个主键来修改该表,以便其值不允许重复 如何在不影响数据的情况下更改表?需要sql代码 问候,, Vix如果我理解您的请求,您希望强制外键在给定表中是唯一的,因此您的架构如下所示: Create Table Table1 ( Id int not null primary key clustered , ForeignId not null , ... , Constraint FK_Tab

我有一个带有主键(自动递增)和外键的sql表。现在我需要通过将外键修改为第二个主键来修改该表,以便其值不允许重复

如何在不影响数据的情况下更改表?需要sql代码

问候,,
Vix

如果我理解您的请求,您希望强制外键在给定表中是唯一的,因此您的架构如下所示:

Create Table Table1
(
    Id int not null primary key clustered
    , ForeignId not null
    , ...
    , Constraint FK_Table1_Table2
        Foreign Key ( ForeignId )
        References Table2( Id )
)
你现在想强迫异化在这个表中是独一无二的,对吗?您将执行以下操作:

Alter Table Table1
    Add Constraint UC_Table1_ForeignId Unique Nonclustered ( ForeignId )

是的,我不想复制外键。