Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/postgresql/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
postgresql:尝试创建表时,关系“table_name”不存在_Sql_Postgresql_Syntax - Fatal编程技术网

postgresql:尝试创建表时,关系“table_name”不存在

postgresql:尝试创建表时,关系“table_name”不存在,sql,postgresql,syntax,Sql,Postgresql,Syntax,我正在通过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

我正在通过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

问题在于product table 1st table中的外键,我知道这一点,因为我删除了它,它创建了所有带有值的表。为了便于编写,我删除了一些值

不确定这是否是语法错误,我尝试了几种方法来解决它,但我不知道,有什么建议吗? 提前感谢。

您必须在产品表之前创建供应商表作为sid,从产品表引用到供应商表中的sid作为外键

这是工作表

您必须在product table之前创建supplier table作为sid,从product table引用到supplier table中的sid作为外键

这是工作表


一个选项是稍后在插入之前添加约束。这样,您就不必担心表的创建顺序

ALTER TABLE product
ADD FOREIGN KEY (sid) REFERENCES supplier(sid);

一个选项是稍后在插入之前添加约束。这样,您就不必担心表的创建顺序

ALTER TABLE product
ADD FOREIGN KEY (sid) REFERENCES supplier(sid);

显然,在定义外键之前,需要先创建供应商表。重新排列您的语句。@a_horse_,带有_no_名称我尝试了一个选项,但它始终包含表不存在,您建议在创建所有值和表后添加该命令?显然,您需要先创建supplier表,然后才能定义外键。重新排列您的语句。@a_horse_与_no_name我尝试了一个选项,但它始终包含表不存在,您建议在创建所有值和表后添加该命令?非常有效,谢谢,我使用了演示。在我以前的尝试中,我尝试切换产品和供应商的位置,但没有在sql查询中将它们放在较低的位置,这就是为什么我不断出现错误的原因。在我以前的尝试中,我尝试切换产品和供应商的位置,但没有将它们都放在sql查询的较低位置,这就是为什么我不断出现错误的原因。