Foregin键返回空结果

时间:2015-12-08 14:08:08

标签: mysql

我在localhosts上使用了一个mySQL数据库。创建具有主键的表和另一个具有指向该键的外键的表,但是当我想看到结果时,我发出的所有结果都是“警告”MySQL返回了emty结果。这是我的表格

CREATE TABLE example_1(
    ex1_id int  NOT NULL AUTO_INCREMENT,
    first_name varchar(50)  NULL,
    last_name varchar(50)  NULL,
    CONSTRAINT example_1_pk PRIMARY KEY (ex1_id)
);

CREATE TABLE example_2 (
    ex2_id int  NOT NULL AUTO_INCREMENT,
    acces_lvl int  NOT NULL,
    CONSTRAINT example_2_pk PRIMARY KEY (ex2_id)
);

CREATE TABLE example_3 (
    ex3_id int  NOT NULL AUTO_INCREMENT,
    first int  NOT NULL,
    second int  NOT NULL,
    CONSTRAINT example_3_pk PRIMARY KEY (ex3_id),
    FOREIGN KEY (first) REFERENCES example_1(ex1_id),
    FOREIGN KEY (second) REFERENCES example_2(ex2_id)
);

然后我向db添加一些内容,例如

INSERT INTO `example_1`(`first_name`, `last_name`) VALUES ('foo', 'bar');

INSERT INTO `example_2`(`acces_lvl`) VALUES (2)

然后当我尝试

SELECT * FROM `example_3`

我什么都没有,空洞的结果。不应该有来自其他表的id?我做错了什么,或者我没做什么事?我在数据库中完全是菜鸟。

1 个答案:

答案 0 :(得分:1)

因为您没有在example_3中插入任何数据。外键约束不传播数据,它们只是强制执行数据关系,因此当您将数据插入example_3时,放入具有外键约束的列中的值在其他表中具有相应的值。