当前位置:  开发笔记 > 编程语言 > 正文

在SQL中的表之间移动行

如何解决《在SQL中的表之间移动行》经验,为你挑选了1个好方法。

我有2个表,一个活动表和一个非活动表.我想行从活动表移动到非活动表.我的第一个想法是

insert into inactive select * from active where ...
delete from active active where ...

然而大约.42秒后,我注意到如果更新改变了where子句选择的内容,这将删除/复制行.

在这种情况下,我可以很容易地防止这种情况,但在我无法做到的情况下该怎么办?

编辑:从答案看起来似乎没有一个简单/琐碎的方法来做到这一点.我对此感到很惊讶.我认为拥有它会有一些实质性的好处.



1> S.Lott..:

状态标志是你的朋友.

UPDATE old_data SET move="MARKED";
INSERT INTO somewhere... SELECT where move="MARKED";
DELETE FROM old_data WHERE move="MARKED";

如果在关闭Autocommit的情况下执行此操作,它将占用整个地方的锁定.

如果您想减少锁定,可以在每个步骤后执行COMMIT.

推荐阅读
谢谢巷议
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有