如何以原子方式删除和获取行数据? [关闭]
Posted
技术标签:
【中文标题】如何以原子方式删除和获取行数据? [关闭]【英文标题】:How can I delete and get the row data in an atomic way? [closed] 【发布时间】:2019-08-07 15:59:06 【问题描述】:我在表列中存储了一次性密钥。我有一个表,它只包含唯一键,一旦读取和发送,必须使用 atomic 操作从表中删除。
我怎样才能做到这一点?
我需要以异步方式使用 Node.js;使用事务为每个请求运行两个查询(select
和 delete
)很麻烦。
我希望Delete
也能返回密钥……那是最简单的。
mysql 版本:5.5.54
【问题讨论】:
@Dharman innodb 您是否有可能使用其他数据库类型,例如MariaDB 10 还是你坚持使用 MySQL 5? @Dharman 无法从 mysql 更改 【参考方案1】:编写一个存储过程以在单个事务中执行SELECT .. FOR UPDATE
和DELETE
并返回SELECT
结果。然后从您的客户端执行一个CALL
。
【讨论】:
【参考方案2】:这可能是 MySQL update output deleted 的重复,也没有答案。
问题是 MySQL 还没有实现这样的语法。它在其他数据库中可用,但在 MySQL 中,您很可能在事务中遇到SELECT .. FOR UPDATE; DELETE ...
。恐怕在 MySQL 中你可能还没有更好的选择。
其他一些链接:
In MariaDB 10.0.5 it is possible to return values from DELETE OUTPUT Clause in MySQL In mysql can I return deleted rows after a deletion?【讨论】:
如果您发现我提供的任何链接都在回答您的问题,或者这是其中任何一个的直接副本,我们可以将此问题作为副本关闭。以上是关于如何以原子方式删除和获取行数据? [关闭]的主要内容,如果未能解决你的问题,请参考以下文章