外键约束和引用列有什么区别?

时间:2021-05-06 13:21:25

标签: mysql foreign-keys create-table

假设我们有两个表,pracprac2

prac 的 CREATE TABLE 语句:

CREATE TABLE prac (
    id int PRIMARY KEY,
    name varchar(44),
    area varchar(44)
);

我将在 sid 中有一个名为 prac2 的列,它将是一个外键,它将引用的列是 id 中的 prac

在这种情况下添加外键的一般方法是这样的:

CREATE TABLE prac2 (
    adm_id int PRIMARY KEY,
    sid int,
    fee_status varchar(20),
    FOREIGN KEY (sid) REFERENCES prac(id)
);

我想到了一种不同的方法来执行此操作并执行此查询:

CREATE TABLE prac2 (
    adm_id int PRIMARY KEY,
    sid int REFERENCES prac(id),
    fee_status varchar(20)
);

我以为查询会出错,但没有。

问题是这两个查询有什么区别?

1 个答案:

答案 0 :(得分:1)

<块引用>

外键约束和引用列有什么区别?

区别很简单 - 列引用被解析但被忽略。

参见 fiddle - 当使用列引用时,既不创建索引也不创建约束/外键。