gpt4 book ai didi

mysql - 数据库同时更新和选择

转载 作者:行者123 更新时间:2023-12-01 00:04:49 24 4
gpt4 key购买 nike

是否可以同时进行选择和更新?

select id,name from mytable where booled = 0

UPDATE mytable SET booled=1 WHERE (select id,name from mytable where booled = 0)

所以说这 2 个命令合而为一。

最佳答案

无需重新发明轮子 - 您只需要正确使用事务即可。只要您对表使用 InnoDB 引擎,MySQL 就支持事务(旧的 MyISAM 无法工作)。

以下一系列语句将执行您想要的操作:

BEGIN;
SELECT id,name FROM mytable WHERE booled=0;
UPDATE mytable SET booled=1 WHERE booled=0;
COMMIT;

根据您的编程语言和数据库驱动程序,您可能无法直接使用开始/提交事务语句,而是使用一些特定于框架的机制来执行此操作。例如,在 Perl 中,您需要执行如下操作:

my $dbh = DBI->connect(...);
$dbh->begin_work(); # This is BEGIN TRANSACTION;
my $sth = $dbh->prepare(
"SELECT id,name FROM mytable WHERE booled=0");
$sth->execute();
while (my $row = $sth->fetchrow_hashref()) {
# do something with fetched $row...
}
$sth->finish();
$dbh->do("UPDATE mytable SET booled=1 WHERE booled=0");
$dbh->commit(); # This is implicit COMMIT TRANSACTION;

关于mysql - 数据库同时更新和选择,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18144569/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com