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

2023-11-29

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

cg_resp
id  | name   | email
1   | George | [email protected]

id列是primary_key,autoincremented and name is unique

and

equip_info
id  | description  | cg_resp_id 
1   | Caliper      | 1

在申请表中,我有 2 个编辑框,名为edit_resp_name and edit_resp_email

如果用户插入一个新的负责名称,例如John与电子邮件[email protected]然后在保存表格期间我想insert一个新的责任者cg_resp表,获取最后插入的id并将其更新为equip_info.cg_resp_id.

如果用户保留该名称George但它正在更新电子邮件[email protected]那么我想update the id= 1 来自cg_resp以及新的电子邮件地址和其余地址(equip_info.cg_resp_id and cg_resp.id)保持不变。

我想保留原始参考cg_resp_id从表equip_info如果负责人的名字相同,那么就需要避免删除并插入新的情况。

如何一劳永逸地做到这一点Sqlitesql 序列?


SQLite 没有不会删除现有行的内置机制。

最简单的方法是将逻辑放入您的应用程序中:

cursor = db.execute("SELECT ...")
if cursor.empty:
    db.execute("INSERT ...")
else:
    db.execute("UPDATE ...")

如果您的语言允许读取受影响的行数,则可以使用两个 SQL 命令来执行此操作:

db.execute("UPDATE ...")
if db.rowcount == 0:
    db.execute("INSERT ...")
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Sqlite:如果不存在则插入,如果存在则更新 的相关文章

随机推荐