PostgreSQL,如何填充这个有两个外键的表&x27;s场
我在尝试使用psql终端窗口和-f选项(这将执行脚本)的脚本填充表时遇到问题 我可以填充piste表和lift表,一点问题都没有,但我有另一个表,其中包含这些表的外键。我可以很好地创建表,但我不能向表中添加任何内容,我根本不知道如何做到这一点 我的桌子: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_
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之间创建关系。