【发布时间】:2020-07-15 21:52:01
【问题描述】:
我正在通过 pgAdmin4 运行此代码:
CREATE TABLE product(
code integer,
pname varchar(30),
descr varchar(50),
utype varchar(30),
uprice float,
manu varchar(30),
sid integer,
PRIMARY KEY (code, sid),
FOREIGN KEY (sid) REFERENCES supplier(sid)
);
CREATE TABLE branch(
bid integer,
bname varchar(30),
baddress varchar(50),
PRIMARY KEY (bid)
);
CREATE TABLE stock(
code integer,
bid integer,
units float,
PRIMARY KEY (code, bid)
);
CREATE TABLE receipt(
bid integer,
rdate date,
rtime time,
ptype varchar(30),
total float,
PRIMARY KEY (bid, rdate, rtime)
);
CREATE TABLE purchase(
bid integer,
rdate date,
rtime time,
code integer,
units float,
PRIMARY KEY (bid, rdate, rtime, code),
check (units > 0)
);
CREATE TABLE supplier(
sid integer,
sname varchar(30),
address varchar(50),
phone numeric (9,0),
PRIMARY KEY (sid)
);
INSERT INTO product (code, pname, descr, utype, uprice, manu, sid) VALUES
(987, 'Tomatoes', 'Vegetable', 'Kg', 5.99, 'manufacturer1', 111),
(876, 'Cucumbers', 'Vegetable', 'Kg', 4.99, 'manufacturer1', 222),
(765, 'Cornflakes', 'Cornflakes', 'Box', 15.9, 'manufacturer1', 222),
INSERT INTO branch (bid, bname, baddress) VALUES
(987, 'tal aviv', 'road 1 tel aviv'),
(878, 'Raanana', 'road 1 raanana'),
(767, 'Holon', 'road 1 holon');
INSERT INTO stock (code, bid, units) VALUES
(987, 989, 50),
(987, 878, 75),
(987, 767, 100),
INSERT INTO receipt (bid, rdate, rtime, ptype) VALUES
(989, '2020-3-19', '10:00', 'Cash'),
(989, '2020-7-16', '12:30', 'Credit'),
(989, '2020-7-15', '15:35', 'Credit'),
INSERT INTO purchase (bid, rdate, rtime, code, units) VALUES
(989, '2020-3-18', '10:00', 987, 5),
(989, '2020-3-18', '10:00', 876, 3),
(989, '2020-3-18', '10:00', 543, 4),
INSERT INTO supplier (sid, sname, address, phone) VALUES
(111, 'supplier2', 'road2 tel aviv', 111111111),
(222, 'supplier3', 'road3 jerusalem', 222222222),
(333, 'supplier4', 'road2 eilat', 333333333);
我不断收到这条消息: 错误:关系“供应商”不存在 SQL 状态:42P01
问题在于产品表(第一个表)中的 外键,我知道这一点是因为我删除了它并创建了所有带有值的表(我删除了一些值以方便写作)。
不确定它是否是语法错误,我尝试了几种方法来解决它,但我一无所知,有什么建议吗? 提前致谢。
【问题讨论】:
-
显然你需要创建
supplier表之前你可以在上面定义一个外键。重新排列你的陈述。 -
@a_horse_with_no_name 我尝试了一个该选项,但它一直表示该表不存在,您建议可能在创建所有值和表后添加该命令?
标签: sql postgresql syntax