sqlite 如何在插入引用记录时创建关系中缺少的记录?

voase2hg  于 2023-03-30  发布在  SQLite
关注(0)|答案(1)|浏览(135)

我是一个业余开发者(来自Python,Go,TS和类似语言),正在为一个家庭应用程序学习SQL(使用SQLite的PocketBase)。
我有一个表Users,它有几个文本列,其中一列Country不是纯文本,我想与另一个表(Countries)建立关系。
Users添加国家/地区(例如 France)的记录时,我需要

  • 检查Countries中是否已有名为 France 的国家/地区
  • 如果是,则获取其id
  • 如果没有,则创建它并检索它id
  • 插入具有该新获取的信息的记录

这是我在其他编程语言中使用的典型方法

我的问题:由于我在SQL示例中看到许多操作捆绑在一起,我想知道是否有一个标准/预期的方法来一次性完成此操作

(i.e.在INSERT中有类似于(发明的)代码VALUES('Emmanuel', 'Macron', 'France' in Countries, ...)的东西。
或者我应该根据上面的算法进行几次SQL调用?

xmd2e60i

xmd2e60i1#

insert into tablename  if not exists
values ("id" ,"France") 

with a 
as
(
select id , case when countryName = "France" then 1 else 0 end as country from tablename 
)
select * from a

相关问题