Postgres 可以在 LEFT JOINing 时使用外键(两个表之间)作为“ON”子句吗?

问题描述 投票:0回答:1

有架构:

CREATE TABLE foo (
    id SERIAL UNIQUE,
    name VARCHAR(15) NOT NULL,
    domain VARCHAR(255),
);

CREATE TABLE bar (
    foo_id INT UNIQUE NOT NULL REFERENCES foo(id),
    passphrase VARCHAR
);

我需要使用:

SELECT * FROM foo LEFT JOIN bar ON bar.foo_id = foo.id;

当 LEFT JOINing 时,Postgres 可以使用外键(两个表之间)作为默认的“ON”子句吗?

即我已经付出了所有的努力来用外键逻辑链接几十个表,为什么我需要在每个查询中重复这些? (从外键推断

ON
子句似乎比让查询器声明它们要安全得多。)

sql postgresql foreign-keys
1个回答
0
投票

postgresql 中没有这样的功能。一般来说,SQL 需要显式指定您希望该查询执行的操作,并且期望这样的隐式连接可能会导致比它们解决的问题更多的问题。

例如,表之间可以有多个外键。然后,当您添加第二个查询时,它必须停止所有以前的查询,或者猜测使用哪一个,这只是两种糟糕的情况!

甚至还不确定您是否总是想要使用外键来连接表。

引用完整性的目的不是自动连接表,而是能够确保您连接表时,值将有效。

© www.soinside.com 2019 - 2024. All rights reserved.