如何创建外键?

时间:2010-02-28 11:10:02

标签: sql sql-server foreign-keys

我正在完成我的任务。它有8个表。每个表都有一个主键。如何生成表的外键?

我的理由是,当我生成主键时,左侧会出现一个键符号。

如何制作外键?

3 个答案:

答案 0 :(得分:1)

这是主题的MySQL docs - 你可能想看看它。基本上,这是你做的一个例子:

CREATE TABLE `table_1` (
    `id` INT(11) NOT NULL AUTO_INCREMENT,
    `name` VARCHAR(32) NOT NULL,
    PRIMARY KEY (`id`)
)
CREATE TABLE `table_2` (
    `id` INT(11) NOT NULL AUTO_INCREMENT,
    `name` VARCHAR(32) NOT NULL,
    `table1_id` INT(11) NOT NULL REFERENCES table_1(`id`)
)

这基本上应该table_2.table1_id引用table_1.id作为外键。

答案 1 :(得分:0)

在table1(引用表)和table2(主表)之间添加外键的SQL是:

ALTER TABLE table1
ADD CONSTRAINT FOREIGN KEY table1_table2_FK 
    REFERENCES table2 (intId) ON (intTable2Id)

答案 2 :(得分:0)

您的混淆源于您认为外键主键的修改版本。它不是,它是一个单独的项目。

例如,Customers表中的CustomerID将具有主键,但Orders表中的CustomerID将是外键引用(指向)Customers表中的主键。 / p>

在Customers表中,主键用于唯一标识每个客户。在订单表中,CustomerID上的外键用于保证每个订单属于客户表中的现有记录。

您可以拥有主键而无需建立任何外键,它仍然可以在识别记录时发挥作用。但是,如果没有主键,则不能在其他表中使用外键(或者,在极少数情况下,在同一个表中),因为主键 name是外键定义的一部分。并且您可以在不同的表格中(在极少数情况下在同一个表格中)指向任意数量的外键,并指向单个主键