有没有一种方法可以在不修改数据库的情况下测试MySQL查询?例如,我可以运行DELETE FROM my_table WHERE id = 101而不实际删除任何东西吗?INSERT和UPDATE呢?Ty
DELETE FROM my_table WHERE id = 101
INSERT
UPDATE
iyzzxitl1#
您可以在运行查询之前启动一个事务,然后在运行它们之后回滚。请注意,要做到这一点,您需要InnoDB或XtraDb表(在MyISAM上不起作用)。要启动一个事务,请向MySQL发送以下语句:
START TRANSACTION;
字符串在查询结束时运行以下语句:
ROLLBACK;
型从其他连接的Angular 来看,您的数据库永远不会被修改。您当前的连接将看到更改,直到ROLLBACK,之后将恢复原始状态。
gg58donl2#
如果你只是想看看有多少行会被删除,为什么不用“select count(* n)”代替“delete”呢?
8oomwypt3#
将你的数据库复制到一个测试数据库或者自动生成一个导入脚本。然后你可以在测试数据库上测试你想要的任何东西,然后使用脚本或者导入再次恢复它。
3条答案
按热度按时间iyzzxitl1#
您可以在运行查询之前启动一个事务,然后在运行它们之后回滚。请注意,要做到这一点,您需要InnoDB或XtraDb表(在MyISAM上不起作用)。
要启动一个事务,请向MySQL发送以下语句:
字符串
在查询结束时运行以下语句:
型
从其他连接的Angular 来看,您的数据库永远不会被修改。您当前的连接将看到更改,直到ROLLBACK,之后将恢复原始状态。
gg58donl2#
如果你只是想看看有多少行会被删除,为什么不用“select count(* n)”代替“delete”呢?
8oomwypt3#
将你的数据库复制到一个测试数据库或者自动生成一个导入脚本。然后你可以在测试数据库上测试你想要的任何东西,然后使用脚本或者导入再次恢复它。