Sql 如果第一个表已经存在,则不会插入第二个表

Sql 如果第一个表已经存在,则不会插入第二个表,sql,sql-insert,postgresql-9.4,Sql,Sql Insert,Postgresql 9.4,我有一个用户和一个日志表。我想继续添加新日志,如果用户名在用户中不存在,也添加它 然而,我所拥有的只有在用户不存在时才会插入日志。如果用户已经存在,则不会添加任何日志 如何修复此问题以使其按预期工作?提前谢谢 CREATE TABLE user ( id serial NOT NULL, name char(60) NOT NULL, CONSTRAINT user_pk PRIMARY KEY (id), CONSTRAINT user_un UNIQUE (n

我有一个用户和一个日志表。我想继续添加新日志,如果用户名在用户中不存在,也添加它

然而,我所拥有的只有在用户不存在时才会插入日志。如果用户已经存在,则不会添加任何日志

如何修复此问题以使其按预期工作?提前谢谢

CREATE TABLE user (
    id serial NOT NULL,
    name char(60) NOT NULL,
    CONSTRAINT user_pk PRIMARY KEY (id),
    CONSTRAINT user_un UNIQUE (name) 
)
CREATE TABLE log (
    id serial NOT NULL,
    name_id int NOT NULL,
    detail char(512) NULL,
    CONSTRAINT detail_pk PRIMARY KEY (id),
    CONSTRAINT detail_user_fk FOREIGN KEY (user_id) REFERENCES user(id) ON DELETE RESTRICT ON UPDATE RESTRICT
)
我的尝试

with ins1 as (
    insert into user (name) 
    values ('myname')
    on conflict do nothing
    returning id as user_id
)
insert into detail (user_id, detail)
select user_id, 'some detail' from ins1;
下面是另一个问题的示例,我将DoNothing更改为update where false,但仍然没有插入日志

with ins1 as (
    insert into "user" (name) 
    values ('myuser')
    on conflict (name) do update
    set name = null where FALSE
    returning id as user_id
)
insert into log (user_id, detail)
select user_id, 'some description' from ins1;

显然,冲突时
不执行任何操作
在冲突时不返回任何内容。请参阅或感谢您提供的链接。我尝试切换“不做任何事”以更新where false,但仍然无法插入新日志。我将把新查询编辑到我的评论中。