Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/80.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
将表的外键设置为同一目标表PostgreSQLl中的两个目标列_Sql_Postgresql_Foreign Keys_Postgresql 11 - Fatal编程技术网

将表的外键设置为同一目标表PostgreSQLl中的两个目标列

将表的外键设置为同一目标表PostgreSQLl中的两个目标列,sql,postgresql,foreign-keys,postgresql-11,Sql,Postgresql,Foreign Keys,Postgresql 11,我正在创建一个表“line”,它有一个“startpoint”列和“endpoint”列。这些列应该由这些点的名称填充,即在“point name”列的表“points”中。我试图将一个外键从points表设置到行:一个用于startpoint列,另一个用于endpoint列,但两者都引用了points表中名为“point name”的同一列。但它不起作用。 我怎么做? 请注意,我使用的是Postgresql 11.6版 这是代码: 'create table public.line(

我正在创建一个表“line”,它有一个“startpoint”列和“endpoint”列。这些列应该由这些点的名称填充,即在“point name”列的表“points”中。我试图将一个外键从points表设置到行:一个用于startpoint列,另一个用于endpoint列,但两者都引用了points表中名为“point name”的同一列。但它不起作用。 我怎么做? 请注意,我使用的是Postgresql 11.6版 这是代码:

'create table public.line(
    lineid integer NOT NULL DEFAULT nextval('line_lineid_seq'::regclass),
    linetype character varying(20) COLLATE pg_catalog."default",
    networkname character varying(50) COLLATE pg_catalog."default",
    startpointname character varying(20) COLLATE pg_catalog."default" NOT NULL,
    endpointname character varying(20) COLLATE pg_catalog."default",
    CONSTRAINT endpoint FOREIGN KEY (endpointname)
        REFERENCES public.points (pointsname) MATCH SIMPLE
        ON UPDATE NO ACTION
        ON DELETE NO ACTION
        NOT VALID,
    CONSTRAINT startpoint FOREIGN KEY (startpointname)
        REFERENCES public.points (pointsname) MATCH SIMPLE
        ON UPDATE NO ACTION
        ON DELETE NO ACTION
        NOT VALID,
    CONSTRAINT length CHECK (length_m > 0::double precision),
    CONSTRAINT diameter CHECK (diameter_m > 0::double precision)
    );'
提前谢谢

我正在创建一个表“line”,其中包含“startpoint”列和“endpoint”列

[……]

我正在尝试将外键从
表设置为

我认为您需要的是另一种方式:您应该在引用
表的
中使用外键

考虑:

create table points (
    point_id int primary key
);

create table lines (
    line_id int primary key,
    startpoint int references points(point_id),
    endpoint int references points(point_id)
)

请(通过点击下面的链接)提出你的问题,并添加你尝试的代码。如果给出错误的代码,那就很好了。但是,试图通过描述错误的代码来描述您希望代码做什么是没有帮助的。我们可以读懂你的错误代码,而你的错误代码并没有告诉我们它应该是什么,但事实并非如此。解释您希望代码实现的功能,例如一个表中的哪些值必须显示在另一个表中的何处。此外,“它没有工作”也没有帮助。准确说出发生了什么&研究错误消息。看,其他链接&投票箭头鼠标覆盖文本。是的,就是这样,我会试试你的解决方案