PostgreSQL,如何填充这个有两个外键的表&x27;s场

PostgreSQL,如何填充这个有两个外键的表&x27;s场,sql,postgresql,Sql,Postgresql,我在尝试使用psql终端窗口和-f选项(这将执行脚本)的脚本填充表时遇到问题 我可以填充piste表和lift表,一点问题都没有,但我有另一个表,其中包含这些表的外键。我可以很好地创建表,但我不能向表中添加任何内容,我根本不知道如何做到这一点 我的桌子: piste {piste_name {PK}, grade, length, fall, open} lift {lift_name {PK}, lift_type, summit, rise, length, operating} lift_

我在尝试使用psql终端窗口和-f选项(这将执行脚本)的脚本填充表时遇到问题

我可以填充piste表和lift表,一点问题都没有,但我有另一个表,其中包含这些表的外键。我可以很好地创建表,但我不能向表中添加任何内容,我根本不知道如何做到这一点

我的桌子:

piste {piste_name {PK}, grade, length, fall, open}
lift {lift_name {PK}, lift_type, summit, rise, length, operating}
lift_location {piste_name*{PK}, lift_name*{PK}}
我的剧本:

CREATE TABLE piste (
    piste_name varchar(30) PRIMARY KEY NOT NULL,
    grade varchar(10) NOT NULL,
    length decimal NOT NULL,
    fall smallint NOT NULL,
    open boolean NOT NULL

);

CREATE TABLE lift (
    lift_name varchar(20) PRIMARY KEY NOT NULL,
    lift_type varchar(10) NOT NULL,
    summit smallint NOT NULL,
    rise smallint NOT NULL,
    length smallint NOT NULL,
    operating boolean NOT NULL
);

CREATE TABLE lift_location (

    piste_name varchar(30) REFERENCES piste(piste_name),
    lift_name varchar(20) REFERENCES lift(lift_name),
    PRIMARY KEY(piste_name, lift_name)
);
因此,如果我在这些表中插入一些值:

INSERT INTO lift (lift_name, lift_type, summit, rise, length, operating) VALUES
('test lift', 'gondola', 1920, 440, 1600, true);


INSERT INTO piste (piste_name, grade, length, fall, open) VALUES
('test piste, 'medium', 3, 440, true);
这些表将包含一行指定的信息。基于上述情况,我希望我的电梯位置表包含以下信息:

piste_name | lift_name
________________________
test piste | test lift
我怎样才能做到这一点

谢谢。
Chris。

您需要运行额外的查询。您需要在
lift_location
表中添加新行,以在两个表中的两行之间创建关系

INSERT INTO lift_location (piste_name, lift_name) VALUES ('test piste', 'test lift');

还要确保
lift
piste
表都具有所需的测试数据。您在第二个
插入
查询中缺少一个

很抱歉,这是一个打字错误!所以我就用同样的方法插入它?谢谢。@chrisewards是的,
INSERT
没有什么特别之处。该约束主要用于维护,因此,例如,您无法在不存在的电梯的piste和list之间创建关系。