知道刚刚增加的值

发布于 2024-10-14 02:16:45 字数 138 浏览 1 评论 0原文

我们每个人都知道如何在 MySQL 中增加列:

update table set col = col + 1 where id = 15;

但是...是否有办法在不执行 SELECT 查询的情况下知道新值?

谢谢

We everybody know how to increment a column in MySQL:

update table set col = col + 1 where id = 15;

But ... is there anyway to know the new value WITHOUT doing a SELECT query ?

Thank you

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

半岛未凉 2024-10-21 02:16:45

据我所知。

如果您考虑一下,由于 UPDATE 可能会影响多行,因此考虑数据库在 UPDATE 上下文中返回所有数据并不简单,也不一定有吸引力。

MySQL 文档还解决了“我可以在同一个子查询中执行 UPDATE 和 SELECT 操作吗”问题:

目前,您无法更新表格
并从同一个表中选择
子查询。

http://dev.mysql.com/doc/refman/5.5/en /update.html

可能对您有用的一种替代方法是依赖 SELECT..FOR UPDATE 方法:

http://dev.mysql.com/doc/refman/5.5/en/innodb-locking-reads.html

Not that I'm aware of.

If you think about it, since multiple rows could be affected by an UPDATE, it's not trivial nor necessarily attractive to think about the database returning all of that data in the context of an UPDATE.

The MySQL docs also address the "can I do UPDATE and SELECT in the same subquery" question:

Currently, you cannot update a table
and select from the same table in a
subquery.

http://dev.mysql.com/doc/refman/5.5/en/update.html

One alternative that may work for you is to rely on the SELECT..FOR UPDATE approach:

http://dev.mysql.com/doc/refman/5.5/en/innodb-locking-reads.html

淡淡绿茶香 2024-10-21 02:16:45

试图理解你的问题。
摘自 Justin Swanhart 发表于 2004 年 7 月 29 日 5:32pm@Mysql UPDATE refman
也许这就是你想要实现的目标

update table set 
col = col + 1 
where id = 15
and @value := col

@value := col 将始终
评估为 true 并将存储
更新前的 col 值
@值变量。

然后你可以做

select @value;

Trying to understand your question.
Taken from Posted by Justin Swanhart on July 29 2004 5:32pm@Mysql UPDATE refman.
Maybe this is what you trying to achieve for

update table set 
col = col + 1 
where id = 15
and @value := col

The @value := col will always
evaluate to true and will store the
col value before the update in the
@value variable.

You could then do

select @value;
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文