向现有表添加带有外键的列?

问题描述 投票:0回答:1

我使用 Microsoft SQL Server 并且我在数据库中有一个表。

+-------------------------------+
|           MEASURE             |
+----+---------+--------+-------+
| id | measure | units  | value |
+----+---------+--------+-------+
| 1  | linear  | meters | 100   |
+----+---------+--------+-------+
| 2  | linear  | inches | 24    |
+----+---------+--------+-------+
| 3  | linear  | inches | 32    |
+----+---------+--------+-------+
| 4  | linear  | meters | 70    |
+----+---------+--------+-------+

我用单位创建新表:

+-------------+
|     UNIT    |
+----+--------+
| id | units  |
+----+--------+
| 1  | meters |
+----+--------+
| 2  | inches | 
+----+--------+

现在,我想在这些表之间创建关系。我想要的结果是这样的:

+-------------------------------+
|           MEASURE             |
+----+---------+--------+-------+                    +-------------+
| id | measure | units  | value |                    |     UNIT    |
+----+---------+--------+-------+                    +----+--------+
| 1  | linear  | 1      | 100   | >----------------o | id | units  |
+----+---------+--------+-------+                    +----+--------+
| 2  | linear  | 2      | 24    |                    | 1  | meters |
+----+---------+--------+-------+                    +----+--------+
| 3  | linear  | 2      | 32    |                    | 2  | inches |
+----+---------+--------+-------+                    +----+--------+
| 4  | linear  | 1      | 70    |
+----+---------+--------+-------+

如何将带有外键的列添加到现有表中,以便它引用适当的 unit(ID) 值?

sql-server t-sql foreign-keys
1个回答
0
投票

为了使您的逻辑正常工作,您需要在表

Measure
中创建一个外键,将相应的
Measure
列与右侧
Unit
列连接起来。在您的示例中,
units
中的
Measure
列将是一个完美的外键。你需要通过它和表
ID
中的
Unit
列连接起来。由于您已经创建了表并且拥有所需的列,因此您所需要做的就是更改需要创建外键的表(在表
Measure
中)并创建键。以下是如何操作的示例:

alter table Measure
add constraint fk_measureUnit foreign key (units) References Unit(ID)

以下是脚本各部分功能的解释:

alter table
用于修改现有表。无论您在其后放置的表名称是什么,都是您要修改的表。
alter table
有多种不同的用途,例如添加、修改或删除列、约束和索引。

add constraint
用于添加约束(在此用法中为外键)。约束的其他示例是
primary key
,它用于确保表中的每一行都是唯一的(例如在表
Unit
中,列
Id
将非常适合它)和
unique
约束,用于确保列中的每个值都与其余值不同。

fk_measureUnit
是您命名外键的部分。您可以选择任何名称,但最好以
fk_
开头,因为这样您就可以向其他开发人员表明它是什么。

foreign key
用于指定要添加到表中的约束。

(units)
用于指定哪一列将成为外键。

References
用于告知第二个表中的哪一列将连接到第一个具有 fk 的表。在它后面输入表的名称,并在括号中输入要用作连接的列(在您的示例中,看起来像 ->
Unit(ID)

© www.soinside.com 2019 - 2024. All rights reserved.