mysql有int字段只增不减功能

现在有一个字段,类型为int,能否仅通过mysql自身的sql语句或配置,来实现该字段只增不减的功能?

比如说现在有一条记录,这个字段的值是1400,现在要对该字段进行UPDATE操作,当UPDATE SET为1300时,就失败,当UPDATE SET为1500时,就成功。

我不想通过后端代码来实现的原因,是因为觉得为了更新记录,单独再查一遍,有点浪费了。

阅读 3.4k
4 个回答

update test set value=1500 where id=1 and value<1500

然后获取影响条数就可以了。

最后,你要留意这个值,这样的更新在并发的情况下,无法做到数据的一致性。

可以尝试设置触发器

触发器可以做到的

我今天也遇到这个问题了,目前找到两种方法,一种是mybaits里xml

update 表 AS a
inner join(select a.值 from 表 AS a WHERE 匹配条件) b
SET
a.值 =GREATEST(b.值, #{变量})
WHERE
匹配条件

一种设置触发器,设置触发器是强约束,如果再想改小只能先删后加

CREATE TRIGGER `触发器名字` BEFORE UPDATE ON `表` FOR EACH ROW SET NEW.值 = GREATEST(NEW.值, OLD.值);

不知道还有没有更好的方法

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题