如何以原子方式删除和获取行数据? [关闭]

Posted

技术标签:

【中文标题】如何以原子方式删除和获取行数据? [关闭]【英文标题】:How can I delete and get the row data in an atomic way? [closed] 【发布时间】:2019-08-07 15:59:06 【问题描述】:

我在表列中存储了一次性密钥。我有一个表,它只包含唯一键,一旦读取和发送,必须使用 atomic 操作从表中删除。

我怎样才能做到这一点?

我需要以异步方式使用 Node.js;使用事务为每个请求运行两个查询(selectdelete)很麻烦。

我希望Delete 也能返回密钥……那是最简单的。

mysql 版本:5.5.54

【问题讨论】:

@Dharman innodb 您是否有可能使用其他数据库类型,例如MariaDB 10 还是你坚持使用 MySQL 5? @Dharman 无法从 mysql 更改 【参考方案1】:

编写一个存储过程以在单个事务中执行SELECT .. FOR UPDATEDELETE 并返回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?

【讨论】:

如果您发现我提供的任何链接都在回答您的问题,或者这是其中任何一个的直接副本,我们可以将此问题作为副本关闭。

以上是关于如何以原子方式删除和获取行数据? [关闭]的主要内容,如果未能解决你的问题,请参考以下文章

如何以原子方式运行 2 个 SQL“SELECT”?或者在我处理它们之前获取行数的任何其他更好的方法

如何基于少数列值获取重复行? [关闭]

如何以编程方式查询 Firebase 转换数据 [关闭]

如何删除与图像边框相邻的项目[关闭]

如何以编程方式获取电影的 DVD 发行日期? [关闭]

如何以正确的方式编写代码内注释和文档?这有啥标准吗? [关闭]