如何在SQL Server中创建与非主键的关系?


8

我有一个用户表,该表有两列,分别是主键UserID和另一列UserName。

  • UserID(int)PK
  • 用户名(varchar(256)

它们都是唯一的,但出于某些原因,我决定将UserName用作其他表中的引用。因此,例如,订单表通过UserName而不是userid引用了user。

  • 订单编号
  • 用户名

我想在所有引用UserName和Users表的表之间建立一种关系,以便获得SQL Server的级联更新/删除功能。

但是SQL Server不允许我在非主键列上创建关系。有什么方法可以在不更改用户表的情况下获得级联更新/删除功能,以便UserName是主键而不是UserID?

Answers:


13

在上创建唯一索引或唯一约束,UserName然后可以按FK约束精细地对其进行引用。

您的陈述

SQL Server不允许我在非主键列上创建关系

是不正确的。SQL Server只关心参与FK关系的列具有定义的唯一索引。


1
您是正确的,我的陈述是基于我尝试创建关系时从sql server得到的错误消息。
Shrage Smilowi​​tz
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.