所以我有一个可能很愚蠢的问题,我甚至不知道我是否正在尝试以正确的方式解决它,但现在就是这样。
我有一个有几个员工的部门,一个员工可以被分配到一个部门,但不是必须的。我想把部门不用作员工的外键,但是那些不属于部门的员工呢? 我可以在fk列中插入null吗?但是我想知道这是否有效,因为我不能仅插入引用列中存在的值吗?
这是我的相关代码
CREATE TABLE department(depno int unique not null,
primary key(depno));
CREATE TABLE employee(ID int unique not null, name not null,
depno int,
primary key(ID))
foreign key(depno)
references department(depno)
我希望这个问题已经没有被回答过一百次,而我在最近两个小时内找不到答案。但我似乎无法找到关于这是否应该起作用的任何内容。
任何提示或解决方案将不胜感激! 非常感谢你!
答案 0 :(得分:2)
这项工作在postgresql
<强> SQL DEMO 强>
CREATE TABLE department(depno int PRIMARY KEY);
CREATE TABLE employee(ID int PRIMARY KEY,
name text not null,
depno int references department(depno)
);
INSERT INTO department VALUES (1);
INSERT INTO department VALUES (2);
INSERT INTO employee VALUES (1, 'Jhon Doe', null); -- INSERT OK
INSERT INTO employee VALUES (2, 'Jane Doe', 3); -- VIOLATE FK
SELECT * FROM employee;
<强>输出强>