当前位置: 首页 > 面试题库 >

Sqlite:如果不存在则插入,如果存在则更新

艾跃
2023-03-14
问题内容

我有一个带有2个表的数据库,如下所示:

cg_resp
id  | name   | email
1   | George | george@yahoo.com

id列是primary_keyautoincremented并且nameunique

equip_info
id  | description  | cg_resp_id 
1   | Caliper      | 1

在申请表中,我有2个编辑框,名称分别为edit_resp_nameedit_resp_email

如果用户像John电子邮件一样插入一个新的负责人姓名,john@yahoo.com
那么在保存表格的html" target="_blank">过程中,我想将新的负责人姓名insert插入cg_resp表中,请插入最后一个id并将其更新为equip_info.cg_resp_id

如果用户保持名称George,但它更新电子邮件一样george01@gmail.com,然后我想updateid从1
=cg_resp使用新的电子邮件地址和他们(其余equip_info.cg_resp_idcg_resp.id)保持不变。

如果负责人的名称相同,我想保留cg_resp_idfrom表的原始引用equip_info,因此有必要避免类似delete和插入新的情况。

如何在一个Sqlite sql序列中完成此操作?


问题答案:

使用INSERT OR
REPLACE
可以完全满足您的要求:当名称不存在时插入新行,否则进行更新。



 类似资料:
  • 问题内容: 我在使用SQL查询时遇到问题。如果同一行尚不存在,我需要插入一行。这是我到目前为止的内容: 我对sql不太熟悉,尤其是不存在的语法,因此在执行时会出现以下错误: ORA-06550:第37行,第11列:PLS-00103:在预期以下情况之一时遇到了符号“ INSERT”: 然后和或 用“ then”符号代替“ INSERT”继续。 following: the following: 问

  • 问题内容: 如果存在,它就可以工作,但是如果不存在,我想将此数据作为新行插入。 更新 datenum是唯一的,但这不是主键 问题答案: Jai是正确的,您应该使用。 请注意,由于它是唯一键,因此不需要在update子句中包含datenum,因此它不应更改。您确实需要包括表中的所有其他列。您可以使用该函数来确保在更新其他列时使用正确的值。 这是使用适用于MySQL 的正确语法重写的更新:

  • 问题内容: 我从谷歌搜索开始,发现这篇文章讨论了互斥表。 我有一张约有1400万条记录的表。如果我想以相同的格式添加更多数据,是否有一种方法可以确保我要插入的记录在不使用一对查询的情况下就不存在(即,要检查的一个查询和要插入的一个查询是结果集是空的)? 字段上的约束是否可以确保如果该约束已经存在,该约束将失败? 似乎 只有 一个约束条件,当我通过php发出插入命令时,脚本就发出了嘎嘎叫声。 问题答

  • 问题内容: 在一个SQL语句中,我尝试插入一行,如果由于约束而失败,则返回现有行。 我有: 该列具有唯一约束。我尝试在末尾追加,但这仍然不返回现有行。 为什么是这样?我以为我的最后一条语句将被执行并返回。有任何想法吗? 注意:由于某些复杂的竞争条件,我无法使用Postgres函数或多个SQL语句。 问题答案: WITH d(t, e) AS ( VALUES (‘abcdefg’, ‘2014-0

  • 问题内容: 我有一些看起来像这样的代码。我必须保留表中的一个自动递增字段(在其他表中使用)。我想简化和优化此代码。 编辑:主键ID是自动递增的字段。我永远都不想改变。但是,当另一个字段重复时,这就是我要更新该记录的时间。 问题答案: 如何替换成: 假设col1是您的主键,如果已经存在一个值为’foo’的行,它将更新其他两列。否则,它将插入新行。

  • 问题内容: 我想要做的就是在我的数据库的用户,但它应该排,一个新行。 Ofcourse我连接到数据库第一和的,并从URL字符串。 可以,但是只添加新行; 这是我尝试过的; 和 和 但是它们都不起作用,我在做什么错? 任何帮助是极大的赞赏! 问题答案: 如果不存在约束,请在您的列上创建约束: 用途: (subs_name, subs_email, subs_birthday) VALUES (?,