我的表有Cas字段,我想在保存操作中实现CompareAndSet
这是我的sql代码
INSERT INTO `test_cas_table`(id,name,cas) VALUES(3, "test data", 2)
ON DUPLICATE KEY UPDATE
id = VALUES(id),
name = VALUES(name),
cas = IF(cas = VALUES(cas) - 1, VALUES(cas) , "update failure")
因为cas字段是BIGINT,当cas != VALUES(cas) - 1
将其设置为"更新失败"导致此执行失败
但是这种方式太难看了,有一个很好的实现吗?
我想知道postgresql有很好的实现吗?
我希望一次执行它
答案 0 :(得分:0)
您的身份列是否已自动生成?如果是这样,则无需检查重复项。只需插入新信息,您的数据库就会处理它。
但是,如果您有一个非自动生成的标识列(如电子邮件或官方文档而不是自动增量整数主键),您需要首先查询您的数据库,查找您即将发布的值坚持。这样,您可以检查查询结果并告诉用户更改其电子邮件或官方文档(如果已由其他用户使用),而不是接收SQLException(Java)。