在MySQL中,我对sql更新查询有疑问,在更新语句之前检查某条记录是否存在的正确方法是什么?考虑一个具有3列的表,例如id,col1,col2。而col1是唯一的,而更新语句包含col1和col2。
我们可以使用select语句检查在insert语句之前是否存在记录。如果在更新col1和col2时在update语句期间遵循相同的规则。该语句将停止,因为即使我们仅更新col2,col1上的记录已经存在。
答案 0 :(得分:1)
如果您更新(或插入到表中),并且新插入/更新的col1值已在某行上使用,则查询应失败,并出现违反唯一约束错误。
使您的应用程序正确处理此错误/异常,并且实际上不需要在更新/插入之前检查此值的存在。您的应用程序查询越少,对每个人来说就越好。
但是,我想请您注意以下内容:
您似乎已经在表中有一个ID列。如果它是主键列,那么它也绝对是唯一的。现在考虑,如果您确实需要在表中具有两个唯一的键列。如果您的应用程序逻辑基于col1列中的唯一值,那么您实际上可以删除ID列,然后将col1改为Primary Key:)
答案 1 :(得分:-1)
在检查col1是否唯一,是否更新的查询中,添加一条规则以排除当前更新的项目:
gateway->A