gpt4 book ai didi

mysql - 如何在运行 SQL Update 语句之前对其进行测试?

转载 作者:IT老高 更新时间:2023-10-28 12:52:27 26 4
gpt4 key购买 nike

在某些情况下,在生产环境中运行 UPDATE 语句可以节省时间。然而,一个糟糕的更新可能比最初的问题更糟糕。

没有使用测试数据库,有哪些选项可以告诉更新语句在运行之前会做什么?

最佳答案

事务呢?它们具有 ROLLBACK 功能。

@见 https://dev.mysql.com/doc/refman/5.0/en/commit.html

例如:

START TRANSACTION;
SELECT * FROM nicetable WHERE somthing=1;
UPDATE nicetable SET nicefield='VALUE' WHERE somthing=1;
SELECT * FROM nicetable WHERE somthing=1; #check

COMMIT;
# or if you want to reset changes
ROLLBACK;

SELECT * FROM nicetable WHERE somthing=1; #should be the old value

回答下面@ri​​ckozoe 的问题:

通常这些行不会被执行一次。在 PHP 中你会写这样的东西(也许有点干净,但想快速回答;-)):

$MysqlConnection->query('START TRANSACTION;');
$erg = $MysqlConnection->query('UPDATE MyGuests SET lastname='Doe' WHERE id=2;');
if($erg)
$MysqlConnection->query('COMMIT;');
else
$MysqlConnection->query('ROLLBACK;');

另一种方法是使用 MySQL 变量(参见 https://dev.mysql.com/doc/refman/5.7/en/user-variables.htm l和 https://stackoverflow.com/a/18499823/1416909):

# do some stuff that should be conditionally rollbacked later on

SET @v1 := UPDATE MyGuests SET lastname='Doe' WHERE id=2;
IF(v1 < 1) THEN
ROLLBACK;
ELSE
COMMIT;
END IF;

但我建议使用您最喜欢的编程语言中可用的语言包装器。

关于mysql - 如何在运行 SQL Update 语句之前对其进行测试?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11011384/

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