【发布时间】:2015-03-31 09:59:27
【问题描述】:
我有一个包含 2 个这样的表的数据库:
cg_resp
id | name | email
1 | George | george@yahoo.com
id 列是 primary_key,autoincremented 和 name 是 unique
和
equip_info
id | description | cg_resp_id
1 | Caliper | 1
在申请表中,我有 2 个编辑框,分别命名为 edit_resp_name 和 edit_resp_email
如果用户使用电子邮件john@yahoo.com 插入一个新的负责人姓名,例如John,那么在保存表单期间我想insert 一个新负责人到cg_resp 表中,获取最后插入的id 和将其更新为equip_info.cg_resp_id。
如果用户保持名称George,但它正在更新电子邮件,如george01@gmail.com,那么我想update id = 1 来自cg_resp 与新的电子邮件地址和其余的( equip_info.cg_resp_id 和 cg_resp.id) 保持不变。
如果负责人的名字相同,我想保留表equip_info中cg_resp_id的原始引用,所以必须避免出现删除和插入新的情况。
如何在一个Sqlite sql 序列中完成此操作?
【问题讨论】:
-
绝对有必要在一条sql语句中做到这一点吗?您可以尝试
select数据库中的名称。如果结果集为空,则使用insert语句,如果该集包含您调用update语句的名称。 -
这不是绝对必要的......如果可能的话,我会做经典的。
-
更新 cg_resp WHERE id=1
-
你可以使用
INSERT OR REPLACE INTO... -
这能回答你的问题吗? SQLite UPSERT / UPDATE OR INSERT