MySQL更新输出已删除

MySQL更新输出已删除,mysql,sql,Mysql,Sql,我正在尝试更新一行,同时获取其内容。 我正在使用以下查询: UPDATE users SET number=number+1 OUTPUT DELETED.* WHERE ID=? 我可以在两个查询中实现这一点,但我希望保持原子性以避免竞争条件 那么,这个查询有问题吗?另外,如果您使用事务第二轮查询,它实际上是原子的。@ADyson此查询不适用于mySQL,因为它不支持它,我将研究事务谢谢!快速回顾一下,我有一个快速的问题,如果我启动一个事务,在它关闭之前,输入另一个查询,然后回滚该事务,这不

我正在尝试更新一行,同时获取其内容。 我正在使用以下查询:

UPDATE users SET number=number+1 OUTPUT DELETED.* WHERE ID=?

我可以在两个查询中实现这一点,但我希望保持原子性以避免竞争条件

那么,这个查询有问题吗?另外,如果您使用事务第二轮查询,它实际上是原子的。@ADyson此查询不适用于mySQL,因为它不支持它,我将研究事务谢谢!快速回顾一下,我有一个快速的问题,如果我启动一个事务,在它关闭之前,输入另一个查询,然后回滚该事务,这不会导致输入的查询也回滚吗?不会,因为该事务只回滚它内部所做的事。这就是重点。如果第二个查询是在事务外部完成的,或者是在不同事务的上下文中完成的(即使使用的是同一段代码,上下文也是执行它的上下文,因此相同代码的两个不同执行是不同的事务上下文),那么第一个事务的回滚不会影响它。AFAICT,MySQL 8.0不支持将
输出删除。*
作为语句语法的一部分。哪个数据库管理系统支持这种表示法?那么,这个查询有问题吗?另外,如果您使用事务第二轮查询,它实际上是原子的。@ADyson此查询不适用于mySQL,因为它不支持它,我将研究事务谢谢!快速回顾一下,我有一个快速的问题,如果我启动一个事务,在它关闭之前,输入另一个查询,然后回滚该事务,这不会导致输入的查询也回滚吗?不会,因为该事务只回滚它内部所做的事。这就是重点。如果第二个查询是在事务外部完成的,或者是在不同事务的上下文中完成的(即使使用的是同一段代码,上下文也是执行它的上下文,因此相同代码的两个不同执行是不同的事务上下文),那么第一个事务的回滚不会影响它。AFAICT,MySQL 8.0不支持将
输出删除。*
作为语句语法的一部分。哪些数据库管理系统支持这种表示法?