用串行主键更新一个表,用引用外键更新另一个表postgres

问题描述

我有两个具有主键/外键关系的表

主键表:

create table table_one (
    table_one_id_field serial,field1 varchar (100) not null,field2 varchar (100) not null,constraint pk__table_one primary key (table_one_id_field)
);
create unique index ix_table_one one table_one (field1,field2)

外键表

create table table_two (
    table_two_id int not null,table_one_id_field int not null,-- the foreign key
    field a int,field b int,constraint pk_table_two primary key (table_two_id)
    constraint fk_table_two foreign key (table_one_id_field) references table_one (table_one_id_field)
);

我不确定更新这两个表的最佳方法是什么。我首先想到的是做这样的事情:

insert into table_one
(field1,field2)
values
('val1','val2')
on conflict (field1,field2) do nothing
returning table_one_id_field

,然后使用返回的值更新table_two。但是,如果确实存在冲突,则不会返回该ID。我的第二个想法是在没有返回语句的情况下运行相同的查询,然后运行选择查询

insert into table_one
(field1,field2) do nothing;

select table_one_id_field from table_one where field1 = 'val1' and field2 = 'val2'

但是我不确定这是否是最安全的方法。还有另一种最佳实践方法可以实现这一目标吗?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)