问题描述
我有两个具有主键/外键关系的表
主键表:
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 (将#修改为@)