【发布时间】:2020-11-13 08:17:54
【问题描述】:
我是一名 CS 学生,正在学习他的第一门数据库课程,所以在这里我使用 Postgresql 创建一个包含以下表格的数据库:员工、项目和worksOn。
因此,如果您运行程序,您可以看到员工表和项目表都已创建。
但是,worksOn 并不是因为它给了我以下错误:
SQL 错误 [23503]:错误:在表“workson”上插入或更新违反了外键约束“fk_employee”
详细信息:表“员工”中不存在键 (essn)=(222443333)。”
我知道人们不会喜欢它,但如果您能提供帮助,我们将不胜感激。另外,考虑到我从来没有处理过数据库,我花了大约一周的时间。
DROP TABLE IF EXISTS employee;
DROP TABLE IF EXISTS project;
DROP TABLE IF EXISTS worksOn;
create table employee(
Ssn bigint generated always as identity,
Fname varchar(45) not null,
Lname varchar(45) not null,
primary key(Ssn)
);
create table project(
Pname varchar(45) not null,
Plocation varchar(45) not null,
Dnum int not null,
Pnumber int generated always as identity,
primary key(Pnumber)
);
create table if not exists worksOn(
Hours int not null,
Essn bigint,
Pno int,
-- index fk_emplyee,
constraint fk_employee
foreign key(Essn)
references employee(Ssn)
-- constraint fk_project
-- foreign key(Pno)
-- references project(Pnumber)
-- on delete set null
);
insert into employee (Fname, Lname)
values('Jim', 'Brown');
--insert into project (Pname, Plocation, Dnum)
--values('ProjA', 'Boston', 3);
insert into worksOn (Essn, Pno, Hours)
values(222443333, 1, 20);
【问题讨论】:
-
既然
Ssn是自动生成的,你确定是222443333...? -
@deceze 我正在尝试在员工中创建一个可以从worksOn 访问的外键,所以我在网上找到了如何在postgresql 中进行操作,这就是我发现的:postgresqltutorial.com/postgresql-foreign-key
-
另外,输入是由教授在他的作业中给出的。
-
如果“SSN”代表“社会安全号码”或类似的东西,那么它应该存储为字符串而不是数字。
标签: sql postgresql foreign-keys sql-insert