Re: How do I upsert depending on a second table?
От | Samuel Marks |
---|---|
Тема | Re: How do I upsert depending on a second table? |
Дата | |
Msg-id | CAMfPbcZzUYZ6yoN-TnpNQZ4PzhFCCiTdchbtwz83+B0Byyk-fw@mail.gmail.com обсуждение исходный текст |
Ответ на | Re: How do I upsert depending on a second table? (Adrian Klaver <adrian.klaver@aklaver.com>) |
Ответы |
Re: How do I upsert depending on a second table?
|
Список | pgsql-general |
the AS syntax can alternatively be used for aliases https://www.postgresql.org/docs/current/sql-select.html `SELECT actual_tablename table0 WHERE table0.column00 = 1` (I used a space) On Tue, Sep 23, 2025 at 3:52 PM Adrian Klaver <adrian.klaver@aklaver.com> wrote: > > On 9/23/25 13:36, Samuel Marks wrote: > > Attempt: > > ```sql > > CREATE TABLE org > > ( > > "name" VARCHAR(50) PRIMARY KEY, > > owner VARCHAR(50) NOT NULL > > ); > > > > CREATE TABLE repo > > ( > > "id" INTEGER PRIMARY KEY, > > full_name VARCHAR(255) UNIQUE NOT NULL, > > org VARCHAR(50) NOT NULL REFERENCES org ("name") > > ); > > > > INSERT INTO org(name, owner) VALUES ('org0', 'user0'); > > > > INSERT INTO repo (id, full_name, org) > > VALUES (0, 'org0/name0 by wrong user', 'org0') > > ON CONFLICT (full_name) DO UPDATE > > SET full_name = EXCLUDED.full_name, > > org = EXCLUDED.org > > WHERE EXISTS (SELECT 1 > > FROM org org_tbl > > WHERE org_tbl.name = EXCLUDED.org > > AND org_tbl.owner = 'wrong user') > > Where is org_tbl? > > Or is this a copy and paste error? > > > RETURNING *; > > > > SELECT * FROM repo WHERE id = 0; > > ``` > > > > This all succeeds. It should fail because the 'wrong user' is trying > > to create a new—or update an existing—repo. > > > > Thanks for all suggestions > > > > > > > -- > Adrian Klaver > adrian.klaver@aklaver.com
В списке pgsql-general по дате отправления: