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,但仍然无法插入新日志。我将把新查询编辑到我的评论中。