我需要将一些数据导出到 CSV 文件。为此,我发出一个SELECT
命令,其中某一列设置为 0。之后,我必须将这些行设置为 1,以免再次导出它们。
面对这种情况的最佳方法是什么?我的意思是一些“交易”,其中我UPDATE
选择了与我之前选择的完全相同的行。
是SELECT ... FOR UPDATE
要走的路吗?
我需要将一些数据导出到 CSV 文件。为此,我发出一个SELECT
命令,其中某一列设置为 0。之后,我必须将这些行设置为 1,以免再次导出它们。
面对这种情况的最佳方法是什么?我的意思是一些“交易”,其中我UPDATE
选择了与我之前选择的完全相同的行。
是SELECT ... FOR UPDATE
要走的路吗?
这是你想要的?
UPDATE table SET column = 1 WHERE(
SELECT column FROM table WHERE column = 0)
如果它对任何人都有帮助,我所做的就是在我的表中有一个 3 状态字段。
每次插入记录时,其初始状态为 0。
当我想导出新行时,事务内部会发生以下情况:
这个问题可能很老,但可能会帮助将来寻找相同事物的人。简单的回答NO!. MySQL 中无法同时选择和更新。尽管根据您的问题,您可以像这样制作存储过程
CREATE PROCEDURE `GetandUpdate` (IN IDSet VARCHAR(300)
BEGIN
select * from tbl_CSV where state = 0 and FIND_IN_SET(id, IDSet);
update tbl_CSV set state = 1 where state = 0 and FIND_IN_SET(id, IDSet);
END
其中 IDSet 可以是逗号分隔的字符串,例如3,14,8,1